मैं फ़िल्टर/क्वेरी के लिए सेंटीनेल मानों के रूप में उपयोग किए जाने के लिए, ZonedDateTime
और Instant.toEpochMilli()
के बीच कनवर्ट कर सकते हैं जो MIN/MAX समय मानों का उपयोग करना चाहते हैं।क्या MIN/MAX मान ZonedDateTime और Instant.toEpochMilli दोनों के साथ काम करेंगे?
मैंने कोशिश की:
OffsetDateTime.MIN.toInstant().toEpochMilli();
OffsetDateTime.MAX.toInstant().toEpochMilli();
लेकिन मैं इस अपवाद प्राप्त करें:
java.lang.ArithmeticException: long overflow
at java.lang.Math.multiplyExact(Math.java:892)
at java.time.Instant.toEpochMilli(Instant.java:1237)
और फिर मैं इस कोशिश की:
ZonedDateTime.ofInstant(Instant.MIN, ZoneId.systemDefault());
ZonedDateTime.ofInstant(Instant.MAX, ZoneId.systemDefault());
लेकिन फिर मैं इस अपवाद प्राप्त करें:
java.time.DateTimeException: Invalid value for Year (valid values -999999999 - 999999999): -1000000001
at java.time.temporal.ValueRange.checkValidIntValue(ValueRange.java:330)
at java.time.temporal.ChronoField.checkValidIntValue(ChronoField.java:722)
at java.time.LocalDate.ofEpochDay(LocalDate.java:341)
at java.time.LocalDateTime.ofEpochSecond(LocalDateTime.java:422)
at java.time.ZonedDateTime.create(ZonedDateTime.java:456)
at java.time.ZonedDateTime.ofInstant(ZonedDateTime.java:409)
मैं भी 'Z' ZoneId
की कोशिश की:
ZonedDateTime.ofInstant(Instant.MIN, ZoneId.of("Z"))
लेकिन यह है कि पिछले एक के रूप में ही अपवाद देता है।
अंत में मैं निम्नलिखित की कोशिश की, और यह काम करने लगता है:
ZonedDateTime.ofInstant(Instant.EPOCH, ZoneId.of("Z"));
ZonedDateTime.ofInstant(Instant.EPOCH.plusMillis(Long.MAX_VALUE), ZoneId.of("Z"));
कि सबसे अच्छा समाधान है?
यह भी ध्यान देने योग्य है कि आपकी तिथियां कितनी दूर हैं। सभी मामलों का मानना है कि इसका मतलब 1 9 70 से पहले या युग के ओवरफ्लो के बाद भी हो सकता था (मेरे पास 100+ साल की तारीख के साथ एक मामला था, आप इसके लिए एमएस युग का उपयोग नहीं कर सकते हैं) – Rogue
धन्यवाद @ ह्यूगो। सरल और शानदार। Long.MIN_VALUE/MAX_VALUE का उपयोग करने के लिए पूरी तरह से समझ में आता है। – jacob
आपका स्वागत है, मदद करने में खुश! दरअसल, लांग मिनट और अधिकतम मूल्यों का उपयोग करके आपको एक अच्छी रेंज मिलती है (200 मिलियन से अधिक वर्षों, ज्यादातर मामलों के लिए पर्याप्त, मुझे लगता है)। –