पर देखो इस विधि जो क्षेत्रों का समर्थन कर रहे हैं। आप के लिए मिल जाएगा LocalDateTime
:
•NANO_OF_SECOND
•NANO_OF_DAY
•MICRO_OF_SECOND
•MICRO_OF_DAY
•MILLI_OF_SECOND
•MILLI_OF_DAY
•SECOND_OF_MINUTE
•SECOND_OF_DAY
•MINUTE_OF_HOUR
•MINUTE_OF_DAY
•HOUR_OF_AMPM
•CLOCK_HOUR_OF_AMPM
•HOUR_OF_DAY
•CLOCK_HOUR_OF_DAY
•AMPM_OF_DAY
•DAY_OF_WEEK
•ALIGNED_DAY_OF_WEEK_IN_MONTH
•ALIGNED_DAY_OF_WEEK_IN_YEAR
•DAY_OF_MONTH
•DAY_OF_YEAR
•EPOCH_DAY
•ALIGNED_WEEK_OF_MONTH
•ALIGNED_WEEK_OF_YEAR
•MONTH_OF_YEAR
•PROLEPTIC_MONTH
•YEAR_OF_ERA
•YEAR
•ERA
फ़ील्ड INSTANT_SECONDS निश्चित रूप से है - समर्थित नहीं है क्योंकि LocalDateTime
किसी भी पूर्ण (वैश्विक) टाइमस्टैम्प का संदर्भ नहीं दे सकता है। लेकिन जो मददगार है वह क्षेत्र है © _DAY जो 1970-01-01 के बाद से बीते हुए दिनों को गिनता है। इसी तरह के विचार प्रकार के लिए मान्य हैं LocalDate
(कम समर्थित क्षेत्रों के साथ)।
यदि आप गैर-मौजूदा मिलिस-से-यूनिक्स-युग क्षेत्र प्राप्त करने का इरादा रखते हैं, तो आपको स्थानीय से वैश्विक प्रकार में परिवर्तित होने के लिए भी समय-क्षेत्र की आवश्यकता है। यह रूपांतरण बहुत सरल किया जा सकता है, अन्य एसओ-पोस्ट देखें ।
आपके प्रश्न और आपके कोड के नंबरों पर वापस आना:
The result 1605 is correct
=> (2014 - 1970) * 365 + 11 (leap days) + 31 (in january 2014) + 3 (in february 2014)
The result 71461 is also correct => 19 * 3600 + 51 * 60 + 1
1970-01-01T00: 00: 00 (ध्यान, कोई समयक्षेत्र) के बाद से 16105L * 86400 + 71461 = 1391543461 सेकंड तब आप टाइमज़ोन ऑफसेट (मिलिसेकंड में 1000 तक संभावित गुणा के लिए बाहर घड़ी) घटा सकते हैं।
दिए गए समयक्षेत्र की जानकारी के बाद अद्यतन करें:
local time = 1391543461 secs
offset = 3600 secs (Europe/Oslo, winter time in february)
utc = 1391543461 - 3600 = 1391539861
JSR-310-दो समान दृष्टिकोण वाले कोड:
long secondsSinceUnixEpoch1 =
LocalDateTime.of(2014, 2, 4, 19, 51, 1).atZone(ZoneId.of("Europe/Oslo")).toEpochSecond();
long secondsSinceUnixEpoch2 =
LocalDate
.of(2014, 2, 4)
.atTime(19, 51, 1)
.atZone(ZoneId.of("Europe/Oslo"))
.toEpochSecond();