tl; डॉ
myJavaUtilDate // The terrible `java.util.Date` class is now legacy. Use *java.time* instead.
.toInstant() // Convert this moment in UTC from the legacy class `Date` to the modern class `Instant`.
.atZone( ZoneId.of( "Africa/Tunis" ) ) // Adjust from UTC to the wall-clock time used by the people of a particular region (a time zone).
.toLocalDate() // Extract the date-only portion.
.atStartOfDay( ZoneId.of( "Africa/Tunis" ) ) // Determine the first moment of that date in that zone. The day does *not* always start at 00:00:00.
java.time
आप भयानक पुराने दिनांक-समय की कक्षाओं का उपयोग कर रहे हैं जो जेएसआर 310 में परिभाषित आधुनिक java.time कक्षाओं द्वारा वर्षों पहले दबाए गए थे ।
Date ➙ Instant
एक java.util.Dateयूटीसी में एक पल का प्रतिनिधित्व करते हैं। इसका प्रतिस्थापन है Instant। पुरानी कक्षाओं में जोड़े गए नए रूपांतरण तरीकों को कॉल करें।
Instant instant = myJavaUtilDate.toInstant() ;
समय क्षेत्र
उस समय क्षेत्र को निर्दिष्ट करें, जिसमें आप अपना नया समय बनाना चाहते हैं।
के रूप में , या , के प्रारूप में एक उचित समय क्षेत्र नाम निर्दिष्ट करें । कभी इस तरह के रूप में 2-4 पत्र संक्षिप्त नाम का उपयोग या के रूप में वे कर रहे हैं नहीं सच समय क्षेत्र, नहीं मानकीकृत, और यहां तक कि अद्वितीय नहीं (!)।Continent/RegionAmerica/MontrealAfrica/CasablancaPacific/AucklandESTIST
ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime
पाने के ZoneIdलिए आवेदन करें । एक ही क्षण, समय पर एक ही बिंदु, लेकिन अलग-अलग दीवार-घड़ी का समय।InstantZonedDateTime
ZonedDateTime zdt = instant.atZone( z ) ;
दिन का समय बदलना
आपने समय बदलने के लिए कहा। LocalTimeदिन के सभी भागों को बदलने के लिए एक लागू करें : घंटा, मिनट, दूसरा, आंशिक दूसरा। ZonedDateTimeमूल के आधार पर मूल्यों के साथ एक नया त्वरित किया जाता है। Java.time कक्षाएं इस का उपयोग अपरिवर्तनीय वस्तुओं पैटर्न प्रदान करने के लिए धागे की सुरक्षा ।
LocalTime lt = LocalTime.of( 15 , 30 ) ; // 3:30 PM.
ZonedDateTime zdtAtThreeThirty = zdt.with( lt ) ;
दिन का पहला क्षण
लेकिन आपने विशेष रूप से 00:00 के लिए पूछा। तो जाहिर है आप दिन का पहला क्षण चाहते हैं। खबरदार: कुछ क्षेत्रों में कुछ दिन 00:00:00 बजे शुरू नहीं होते हैं। वे डेलाइट सेविंग टाइम (DST) जैसी विसंगतियों के कारण 01:00:00 जैसे किसी अन्य समय पर शुरू कर सकते हैं।
Java.time को पहले क्षण का निर्धारण करने दें । दिनांक-केवल भाग निकालें। फिर पहले क्षण प्राप्त करने के लिए टाइम ज़ोन पास करें।
LocalDate ld = zdt.toLocalDate() ;
ZonedDateTime zdtFirstMomentOfDay = ld.atStartOfDay( z ) ;
UTC में समायोजित करें
यदि आपको यूटीसी पर वापस जाने की आवश्यकता है, तो एक निकालें Instant।
Instant instant = zdtFirstMomentOfDay.toInstant() ;
Instant ➙ Date
अगर आपको java.time मेंjava.util.Date अभी तक अपडेट नहीं किए गए पुराने कोड के साथ हस्तक्षेप करने की आवश्यकता है , तो कनवर्ट करें।
java.util.Date d = java.util.Date.from( instant ) ;