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/Region
America/Montreal
Africa/Casablanca
Pacific/Auckland
EST
IST
ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime
पाने के ZoneId
लिए आवेदन करें । एक ही क्षण, समय पर एक ही बिंदु, लेकिन अलग-अलग दीवार-घड़ी का समय।Instant
ZonedDateTime
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 ) ;