tl; डॉ
Instant.now()
java.time
जावा के शुरुआती संस्करणों के साथ बंडल की गई पुरानी पुरानी डेट-टाइम कक्षाओं को जावा 8 और बाद में निर्मित java.time कक्षाओं द्वारा दबा दिया गया है। ओरेकल ट्यूटोरियल देखें । कार्यक्षमता की ज्यादातर में जावा 6 और 7 को वापस भेजा जा चुका है ThreeTen-backport और आगे में एंड्रॉयड के लिए अनुकूलित ThreeTenABP ।
Instant
एक यूटीसीInstant में समयरेखा पर एक क्षण का प्रतिनिधित्व करता है जिसमें नैनोसेकंड तक का संकल्प होता है ।
Instant instant = Instant.now();
toStringविधि पाठ मानक से एक का उपयोग तिथि-समय मान से स्ट्रिंग ऑब्जेक्ट उत्पन्न करता है आईएसओ 8601 प्रारूपों।
String output = instant.toString();
2016-06-27T19: 15: 25.864Z
Instantवर्ग java.time में एक बुनियादी इमारत ब्लॉक वर्ग है। UTC में तारीख-समय के मूल्यों को ट्रैक करने, संग्रहीत करने और विनिमय करने के लिए आमतौर पर सबसे अच्छा अभ्यास है, दिनांक-समय को संभालते समय यह आपकी गो-क्लास होनी चाहिए।
OffsetDateTime
लेकिन Instantसीमाएँ हैं जैसे कि वैकल्पिक स्वरूपों में तार पैदा करने के लिए कोई प्रारूपण विकल्प नहीं। अधिक लचीलेपन के लिए, से कन्वर्ट Instantकरें OffsetDateTime। एक ऑफसेट-यूटीसी से निर्दिष्ट करें । Java.time में कि एक ZoneOffsetवस्तु का मतलब है । यहां हम UTC (+00) के साथ रहना चाहते हैं ताकि हम सुविधाजनक स्थिरांक का उपयोग कर सकें ZoneOffset.UTC।
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );
2016-06-27T19: 15: 25.864Z
या Instantकक्षा को छोड़ दें ।
OffsetDateTime.now( ZoneOffset.UTC )
अब OffsetDateTimeहाथ में एक वस्तु के साथ , आप DateTimeFormatterस्ट्रिंग को वैकल्पिक स्वरूपों में पाठ के साथ ऑब्जेक्ट बनाने के लिए उपयोग कर सकते हैं । उपयोग करने के कई उदाहरणों के लिए स्टैक ओवरफ्लो खोजें DateTimeFormatter।
ZonedDateTime
जब आप कुछ विशेष समय क्षेत्र के लिए दीवार-घड़ी समय प्रदर्शित करना चाहते हैं , तो ए ZoneIdप्राप्त करने के लिए आवेदन करें ZonedDateTime।
इस उदाहरण में हम मॉन्ट्रियल समय क्षेत्र लागू करते हैं। गर्मियों में, डेलाइट सेविंग टाइम (DST) बकवास के तहत , ज़ोन की भरपाई होती है -04:00। इसलिए ध्यान दें कि आउटपुट 15के लिए 19दिन का समय घंटे के बजाय चार घंटे पहले कैसे होता है । Instantऔर ZonedDateTimeदोनों बहुत ही समान क्षण का प्रतिनिधित्व करते हैं, बस दो अलग-अलग लेंसों के माध्यम से देखा जाता है।
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
2016-06-27T15: 15: 25.864-04: 00 [अमेरिका / मॉन्ट्रियल]
परिवर्तित
जबकि आपको पुरानी तारीखों की कक्षाओं से बचना चाहिए, यदि आपको पुरानी कक्षाओं में जोड़े गए नए तरीकों का उपयोग करके परिवर्तित करना होगा। यहाँ हम उपयोग करते हैं java.util.Date.from( Instant )और java.util.Date::toInstant।
java.util.Date utilDate = java.util.Date.from( instant );
और दूसरी दिशा में जा रहा है।
Instant instant= utilDate.toInstant();
इसी तरह, GregorianCalendar( से (उपवर्ग Calendar) में जोड़े गए नए तरीकों की तलाश करें ताकि उन्हें और इससे परिवर्तित किया जा सके java.time.ZonedDateTime।
जावा के बारे में
Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date, Calendar, और SimpleDateFormat।
अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है ।
Joda समय परियोजना, अब में रखरखाव मोड , प्रवास करने की सलाह देता java.time कक्षाएं।
आप अपने डेटाबेस से सीधे java.time वस्तुओं का आदान-प्रदान कर सकते हैं । JDBC 4.2 या उसके बाद के JDBC ड्राइवर का अनुपालन करें । तार की कोई जरूरत नहीं, कक्षाओं की कोई जरूरत नहीं । हाइबरनेट 5 और जेपीए 2.2 जावा का समर्थन करते हैं ।java.sql.*
Java.time कक्षाएं कहाँ से प्राप्त करें?
java.util.Dateकभी भी स्थानीय मशीन की तारीख नहीं होती है। यह हमेशा UTC + 00: 00 के सापेक्ष 1970-01-01 के बाद से बीमित मिलीसेक के रूप में परिभाषित किया गया है। हो सकता है कि इसकी पद्धति का व्यवहारtoString()आपको भ्रमित करता हो जो वास्तव में स्थानीय समय क्षेत्र में प्रतिनिधित्व का उपयोग करता है।