आधुनिक उत्तर के लिए समय।
java.time और ThreeTenABP
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("d/M/u");
String validUntil = "1/1/1990";
LocalDate validDate = LocalDate.parse(validUntil, dateFormatter);
LocalDate currentDate = LocalDate.now(ZoneId.of("Pacific/Efate"));
if (currentDate.isAfter(validDate)) {
System.out.println("Catalog is outdated");
}
जब मैंने इस कोड को अभी चलाया, तो आउटपुट था:
कैटलॉग पुराना है
चूंकि यह सभी समय क्षेत्रों में एक ही तारीख कभी नहीं है, इसलिए स्पष्ट समय क्षेत्र दें LocalDate.now
। यदि आप चाहते हैं कि कैटलॉग सभी समय क्षेत्रों में एक ही समय में समाप्त हो जाए, तो आप ZoneOffset.UTC
तब तक दे सकते हैं जब तक आप उपयोगकर्ताओं को सूचित करते हैं कि आप यूटीसी का उपयोग कर रहे हैं।
मैं जावा का उपयोग कर रहा हूं। आधुनिक जावा तिथि और समय एपीआई। आपके द्वारा उपयोग की जाने वाली दिनांक-समय कक्षाएं Calendar
, SimpleDateFormat
और Date
, सभी खराब तरीके से डिज़ाइन की गई हैं और सौभाग्य से लंबे समय तक पुरानी हैं। नाम के बावजूद Date
एक तारीख का प्रतिनिधित्व नहीं करता है, लेकिन समय में एक बिंदु। इस का एक परिणाम यह है: भले ही आज, 15 फरवरी, 2019 है एक नव निर्मित Date
वस्तु पहले से ही है के बाद (ऐसा नहीं के बराबर) एक Date
पार्स करने से वस्तु 15/02/2019
। यह कुछ भ्रमित करता है। इसके विपरीत आधुनिक LocalDate
दिन के समय के बिना (और समय क्षेत्र के बिना) एक तारीख है, इसलिए LocalDate
आज की तारीख का प्रतिनिधित्व करने वाले दो एस हमेशा बराबर होंगे।
प्रश्न: क्या मैं एंड्रॉइड पर java.time का उपयोग कर सकता हूं?
हाँ, java.time पुराने और नए Android उपकरणों पर अच्छी तरह से काम करता है। इसके लिए बस कम से कम जावा 6 की आवश्यकता होती है ।
- जावा 8 और बाद में और नए एंड्रॉइड डिवाइसों पर (एपीआई स्तर 26 से) आधुनिक एपीआई बिल्ट-इन आता है।
- जावा 6 और 7 में थ्रीटेन बैकपोर्ट मिलता है, आधुनिक कक्षाओं का बैकपोर्ट (जेएसआर 310 के लिए थ्रीटेन; नीचे लिंक देखें)।
- पर (पुराने) एंड्रॉइड, थ्रीटेन बैकपोर्ट के एंड्रॉइड संस्करण का उपयोग करते हैं। इसे थ्रीटेनबप कहा जाता है। और सुनिश्चित करें कि आप
org.threeten.bp
सबपेकेज से दिनांक और समय की कक्षाओं का आयात करते हैं ।
लिंक
Calendar
,SimpleDateFormat
,Date
या अन्य लंबी पुरानी जावा दिनांक और समय वर्गों के किसी भी। इसके बजायjava.time
, आधुनिक जावा तिथि और समय एपीआई का उपयोग करें । हां, आप इसे एंड्रॉइड पर उपयोग कर सकते हैं। पुराने एंड्रॉइड के लिए देखें कि एंड्रॉइड प्रोजेक्ट में थ्रीटेनबप का उपयोग कैसे करें ।