tl; डॉ
OffsetDateTime.now(ZoneOffset.ofHours(10) ).withHour(23)
बचें विरासत तिथि-समय वर्गों
विरासत GregorianCalendar
सहित तिथि-समय कक्षाएं एक भ्रमित कर रहे हैं। अजीब, खराब डिजाइन गड़बड़। उनसे बचें। अब java.time कक्षाओं द्वारा आपूर्ति की गई। विशेष रूप से, GregorianCalendar
को ZonedDateTime
द्वारा प्रतिस्थापित किया गया है।
ऑफसेट-से-यूटीसी
आप जाहिरा तौर पर एक दस में से offset-from-UTCUTC के आगे घंटे के साथ एक पल चाहते हैं। अपनी वांछित ऑफ़सेट परिभाषित करें।
ZoneOffset offset = ZoneOffset.ofHours(10) ;
offset.toString(): 10: 00
साथ कि ऑफसेट एक OffsetDateTime
के रूप में वर्तमान क्षण प्राप्त करें।
OffsetDateTime odt = OffsetDateTime.now(offset) ;
odt.toString(): 2018-02-15T16: 44: ४४.२१६६४२ + 10: 00
आप घंटे ओवरराइड करने के लिए 23
होना चाहता हूँ।
OffsetDateTime odt23 = odt.withHour(23) ;
odt23.toString(): 2018-02-15T23: 44: 44।216,642 + 10: 00
समय क्षेत्र
मैं HOUR_OF_DAY क्षेत्र की स्थापना की और ग्रेगोरी कैलेंडर की तारीख वस्तु की समय-क्षेत्र बदलने के लिए कोशिश कर रहा हूँ।
नहीं, आप offset-from-UTC बदल रहे हैं, time zone नहीं।
यदि आप निश्चित इच्छित क्षेत्र के लिए जानते हैं तो केवल ऑफसेट के बजाय समय क्षेत्र का उपयोग करना बेहतर है, । एक समय क्षेत्र एक निश्चित क्षेत्र के लोगों द्वारा उपयोग किए जाने वाले ऑफ़सेट में अतीत, वर्तमान और भविष्य के परिवर्तनों का इतिहास है। एक समय क्षेत्र के साथ आप हमेशा ऑफ़सेट निर्धारित कर सकते हैं, लेकिन इसके विपरीत नहीं।
ऐसे America/Montreal
, Africa/Casablanca
, या Pacific/Auckland
रूप continent/region
के प्रारूप में एक proper time zone name निर्दिष्ट करें,। 0-या IST
जैसे 3-4 अक्षर संक्षेप का उपयोग न करें क्योंकि सही समय क्षेत्र, मानकीकृत नहीं, और यहां तक कि अनूठा (!) भी नहीं है।
ZoneId z = ZoneId.of("Australia/Brisbane") ;
उस क्षेत्र के लोगों द्वारा देखी गई दीवार घड़ी के समय में वर्तमान क्षण को कैप्चर करें।
ZonedDateTime zdt = ZonedDateTime.now(z) ;
घंटे-प्रतिदिन ओवरराइड करें।
ZonedDateTime zdt23 = zdt.withHour(23) ;
बारे java.time
java.time ढांचे जावा 8 और बाद में बनाया गया है। ये कक्षाएं परेशान पुराने legacy दिनांक-समय कक्षाएं जैसे java.util.Date
, Calendar
, & SimpleDateFormat
प्रदान करती हैं।
Joda-Time प्रोजेक्ट, अब maintenance mode में, java.time कक्षाओं में माइग्रेशन की सलाह देता है।
और जानने के लिए, Oracle Tutorial देखें। और कई उदाहरणों और स्पष्टीकरणों के लिए स्टैक ओवरफ़्लो खोजें। विशिष्टता JSR 310 है।
एक JDBC driver अनुरूप JDBC 4.2 साथ या बाद में उपयोग करके आप अपने डाटाबेस के साथ java.time वस्तुओं सीधे का आदान-प्रदान कर सकते हैं। तारों की कोई ज़रूरत नहीं है और न ही java.sql। * कक्षाएं।
जावा.टाइम कक्षाएं कहां प्राप्त करें?
ThreeTen-Extra परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के संभावित भविष्य के जोड़ों के लिए एक सिद्ध भूमि है। आपको यहां कुछ उपयोगी कक्षाएं मिल सकती हैं जैसे Interval
, YearWeek
, YearQuarter
, और more।