java.time
जोडा-टाइम प्रोजेक्ट अब रखरखाव मोड में है। टीम जावा.टाइम कक्षाओं में माइग्रेशन की सलाह देती है।
जावा/टाइम में न्यूनतम/अधिकतम के लिए, इसी तरह के प्रश्न पर my Answer देखें।
Joda समय
Joda-Time पटरियों समय UTC में 1970 के पहले पल की अवधि के बाद milliseconds की गिनती के रूप में। यह गणना 64-bitlong
पूर्णांक का उपयोग करके रखी जाती है। इसलिए, तकनीकी रूप से, अधिकतम और न्यूनतम +12- long
की सीमाएं हैं।
… new DateTime(Long.MIN_VALUE)
… new DateTime(Long.MAX_VALUE)
जोडा-टाइम में स्थिरांक के रूप में आसानी से उपलब्ध न्यूनतम/अधिकतम मूल्य नहीं हैं। इसके विपरीत, ध्यान दें कि जोडा-टाइम के उत्तराधिकारी, java.time जावा 8 और बाद में निर्मित, वास्तव में स्थिरांक LocalDateTime.MIN
और LocalDateTime.MAX
प्रदान करते हैं।
वैसे, जोडा-टाइम टीम ने सलाह दी है कि हमें जावा.टाइम में माइग्रेट करना चाहिए। जावा की अधिकांश कार्यक्षमता जावा 12 & 7 को ThreeTen-Backport में बैक-पोर्ट किया गया है, और ThreeTen-ABP में एंड्रॉइड को अनुकूलित किया गया है।
, बहुत बड़ा बहुत छोटा
इन चरम सीमाओं से सावधान रहें। उनका उपयोग व्यावहारिक नहीं है। विभिन्न पुस्तकालयों, ऐप्स, डेटाबेस, और अन्य सिंक/डेट-टाइम मानों के स्रोतों में बहुत अलग सीमाएं हो सकती हैं, कुछ बहुत बड़ी लेकिन आमतौर पर बहुत छोटी होती है।
उदाहरण के लिए, कई प्रणालियों UNIX & से पुरानी परंपरा का उपयोग 1 9 70-01-010000: 00: 00Z के बाद से पूरे सेकंड की 32-बिट पूर्णांक गणना के रूप में ट्रैकिंग समय के POSIX। +/- दो अरब सेकंड की प्राकृतिक सीमा Year 2038 Problem लूमिंग में परिणाम देती है।
एक और सीमा फॉर्म और रिपोर्ट पर फ़ील्ड का भौतिक प्रदर्शन आकार है जो सालाना संख्या में केवल चार अंक की अपेक्षा करता है।
वर्कअराउंड
आप अपना स्वयं का न्यूनतम/अधिकतम परिभाषित कर सकते हैं।
आप 0000 और वर्ष 99 99 जैसे चरम मूल्यों को प्राप्त कर सकते हैं। जोडा-टाइम 9, 999 से साल बाद का समर्थन करता है लेकिन मैं स्क्रीन पर और रिपोर्ट में प्रदर्शित होने के लिए सामान्य रूप से प्रयुक्त प्रारूपों को फिट करने के लिए 4 अंकों के साथ रहूंगा। दृश्यमान रूप से, चार नाइन एक फर्जी तारीख के रूप में बाहर खड़े हैं।
या आप अपने व्यापार तर्क के लिए अपेक्षित न्यूनतम अनुमानित मूल्य चाहते हैं। यदि एक नई चालान प्रणाली तैयार कर रही है, तो आप जानते हैं कि वर्ष हमेशा इस वर्ष या बाद में होना चाहिए।
मैं एक सहायक वर्ग पर स्थिरांक को परिभाषित करने का सुझाव देता हूं। कुछ इस तरह:
package com.example;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
public class JodaTimeHelper {
static final public DateTime START_OF_TIME = new DateTime(0000, 1, 1, 0, 0, 0, DateTimeZone.UTC);
static final public DateTime END_OF_TIME = new DateTime(9999, 1, 1, 0, 0, 0, DateTimeZone.UTC);
static final public DateTime MINIMUM_INVOICE_DATETIME = new DateTime(2015, 1, 1, 0, 0, 0, DateTimeZone.UTC);
}
यहाँ उन स्थिरांक फोन करने के लिए वाक्य रचना है।
System.out.println("START_OF_TIME: " + JodaTimeHelper.START_OF_TIME);
System.out.println("END_OF_TIME: " + JodaTimeHelper.END_OF_TIME);
System.out.println("END_OF_TIME: " + JodaTimeHelper. MINIMUM_INVOICE_DATETIME);
रन करते समय।
START_OF_TIME: 0000-01-01T00:00:00.000Z
END_OF_TIME: 9999-01-01T00:00:00.000Z
MINIMUM_INVOICE_DATETIME: 2015-01-01T00:00:00.000Z
मुझे लगता है कि 'नया डेटटाइम (0)' आपको न्यूनतम 'डेटटाइम' देगा जिसका प्रतिनिधित्व किया जा सकता है। बस एक जंगली अनुमान है, लेकिन हो सकता है कि 'लंबा' का अधिकतम मूल्य अधिकतम होगा? –
जावा 8 के साथ, यह बस ['LocalDateTime.MAX'] है (https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#MAX) (resp। MIN) – Tunaki
@TheodorosChatzigiannakis 0 01/01/1970 दे देंगे। आप अतीत में नकारात्मक मूल्यों के साथ निश्चित रूप से आगे जा सकते हैं। हालांकि, दिनांक-समय के लिए MIN_VALUE और MAX_VALUE वैध मान मान्य नहीं हैं। वे तत्काल के लिए ठीक हैं। –