tl; डॉ
java.time.Instant // Represent a moment as seen in UTC. Internally, a count of nanoseconds since 1970-01-01T00:00Z.
.ofEpochSecond( 1_220_227_200L ) // Pass a count of whole seconds since the same epoch reference of 1970-01-01T00:00Z.
आपका डेटा पता है
लोग एक युग के बाद से एक नंबर के रूप में ट्रैकिंग समय में कई प्राथमिकताओं का उपयोग करते हैं । इसलिए जब आप कुछ संख्याओं को एक युग के बाद से गिनती के रूप में व्याख्या करने के लिए प्राप्त करते हैं, तो आपको यह निर्धारित करना होगा:
- क्या काल? विभिन्न प्रणालियों में
कई युगों की तिथियों का उपयोग किया गया है। आमतौर पर इस्तेमाल किया जाने वाला पोसिक्स / यूनिक्स समय है , जहां यूटीसी में 1970 का पहला क्षण है। लेकिन आपको यह युग नहीं मानना चाहिए ।
- क्या परिशुद्धता?
क्या हम युग के बाद से सेकंड, मिलीसेकंड , माइक्रोसेकंड या नैनोसेकंड्स बात कर रहे हैं ?
- क्या समय क्षेत्र?
आमतौर पर यूकोच / जीएमटी टाइम ज़ोन में एक गिनती होती है , यानी किसी भी समय ज़ोन की भरपाई नहीं होती है। लेकिन कभी-कभी, जब अनुभवहीन या तिथि-समय अज्ञानी प्रोग्रामर को शामिल करते हैं, तो निहित समय क्षेत्र हो सकता है।
आपके मामले में, जैसा कि अन्य ने उल्लेख किया है, आपको यूनिक्स युग के बाद से कुछ सेकंड दिए गए हैं। लेकिन आप उन सेकंड्स को एक कंस्ट्रक्टर के पास भेज रहे हैं, जो मिलीसेकंड की अपेक्षा करता है। तो समाधान 1,000 से गुणा करना है।
सीख सीखी:
- निर्धारित करें, ग्रहण न करें, प्राप्त डेटा का अर्थ।
- डॉक्टर पढ़ें ।
आपका डेटा
आपका डेटा पूरे सेकंड में लगता है। यदि हम 1970 की शुरुआत का एक युग मानते हैं, और यदि हम यूटीसी समय क्षेत्र मानते हैं, तो1,220,227,200
सितंबर 2008 के पहले दिन का पहला क्षण है।
Joda समय
जावा के साथ बंडल java.util.Date और। कैलेन्डर कक्षाएं बेहद कष्टकारी हैं। इनसे बचें। इसके बजाय जोडा-टाइम लाइब्रेरी या नए जावा.टाइम पैकेज का उपयोग करेंजावा 8 (और जोडा-टाइम से प्रेरित) में बंडल गए ।
ध्यान दें कि जूडा DateTime
-टाइम के विपरीत, जोडा-टाइम एक सही मायने में अपने ही निर्धारित समय क्षेत्र को जानता है । इसलिए नीचे दिए गए Joda-Time 2.4 कोड के उदाहरण में, ध्यान दें कि हम पहले UTC की डिफ़ॉल्ट धारणा का उपयोग करके मिलीसेकंड को पार्स करते हैं। फिर, दूसरी बात, हम समायोजित करने के लिए पेरिस का समय क्षेत्र निर्दिष्ट करते हैं। ब्रह्मांड के समय में एक ही पल, लेकिन अलग - अलग दीवार-घड़ी का समय । प्रदर्शन के लिए, हम फिर से यूटीसी को समायोजित करते हैं। लगभग हमेशा बेहतर एक अनुमानित डिफ़ॉल्ट (अक्सर तारीख-समय के काम में परेशानी का कारण) पर भरोसा करने के बजाय अपने वांछित / अपेक्षित समय क्षेत्र को स्पष्ट करना बेहतर होता है।
DateTime का निर्माण करने के लिए हमें मिलीसेकंड की आवश्यकता होती है। इसलिए अपना सेकंड का इनपुट लें, और एक हजार से गुणा करें। ध्यान दें कि परिणाम 64-बिट होना चाहिए long
क्योंकि हम 32-बिट को ओवरफ्लो करेंगे int
।
long input = 1_220_227_200L; // Note the "L" appended to long integer literals.
long milliseconds = ( input * 1_000L ); // Use a "long", not the usual "int". Note the appended "L".
निर्माणकर्ता को मिलीसेकंड की वह संख्या फ़ीड करें। यह विशेष रूप से निर्माणकर्ता मानता है कि गिनती 1970 के यूनिक्स युग से है। इसलिए निर्माण के बाद वांछित समय क्षेत्र को समायोजित करें।
उचित समय क्षेत्र के नाम, महाद्वीप और शहर / क्षेत्र के संयोजन का उपयोग करें । कभी भी 3 या 4 अक्षर कोड का उपयोग न करें जैसे EST
कि वे न तो मानकीकृत हैं और न ही अद्वितीय हैं।
DateTime dateTimeParis = new DateTime( milliseconds ).withZone( DateTimeZone.forID( "Europe/Paris" ) );
प्रदर्शन के लिए, समय क्षेत्र को फिर से समायोजित करें।
DateTime dateTimeUtc = dateTimeParis.withZone( DateTimeZone.UTC );
DateTime dateTimeMontréal = dateTimeParis.withZone( DateTimeZone.forID( "America/Montreal" ) );
सांत्वना देना। ध्यान दें कि मॉन्ट्रियल में तिथि कैसे भिन्न होती है, क्योंकि नया दिन यूरोप में शुरू हुआ है लेकिन अभी तक अमेरिका में नहीं है।
System.out.println( "dateTimeParis: " + dateTimeParis );
System.out.println( "dateTimeUTC: " + dateTimeUtc );
System.out.println( "dateTimeMontréal: " + dateTimeMontréal );
जब चला।
dateTimeParis: 2008-09-01T02:00:00.000+02:00
dateTimeUTC: 2008-09-01T00:00:00.000Z
dateTimeMontréal: 2008-08-31T20:00:00.000-04:00
java.time
Joda-Time के निर्माताओं ने हमें इसके प्रतिस्थापन, java.time में प्रवास करने के लिए कहा है जैसे ही सुविधाजनक हो फ्रेमवर्क। जबकि Joda-Time का सक्रिय रूप से समर्थन जारी है, भविष्य के सभी विकास java.time कक्षाओं और थ्रीटेन-एक्स्ट्रा प्रोजेक्ट में उनके एक्सटेंशन पर किए जाएंगे।
जावा-टाइम फ्रेमवर्क जेएसआर 310 द्वारा परिभाषित किया गया है और इसे जावा 8 और बाद में बनाया गया है। जावा.टाइम क्लासेस को थ्री टेन-बैकपोर्ट प्रोजेक्ट पर जावा 6 और 7 में और थ्री टेनबैप प्रोजेक्ट में एंड्रॉइड पर वापस पोर्ट किया गया है ।
एक Instant
में समय रेखा पर एक पल है यूटीसी नैनोसेकंड के एक संकल्प के साथ। यूटीसी में इसकी अवधि 1970 का पहला क्षण है।
Instant instant = Instant.ofEpochSecond( 1_220_227_200L );
प्राप्त करने के लिए एक ऑफसेट-यूटीसी से आवेदन करेंZoneOffset
OffsetDateTime
।
बेहतर, अभी तक, यदि ज्ञात हो, तो ए ZoneId
प्राप्त करने के लिए समय क्षेत्र लागू करें ZonedDateTime
।
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );