Java 8 में शुरू किए गए java.time पैकेज में दिनांक और समय के साथ काम करने के लिए कई क्लास हैं।
LocalDatejava.time.LocalDate क्लास ISO-8601 कैलेंडर प्रणाली में बिना समय क्षेत्र वाले किसी दिनांक को दर्शाती है, जैसे 2007-12-03:
LocalDate date = LocalDate.of(2007, 12, 3);
दिनांकों की तुलना दूसरे दिनांकों से की जा सकती है:
LocalDate date1 = LocalDate.of(2007, 12, 3);
LocalDate date2 = LocalDate.of(2007, 12, 4);
date1.isBefore(date2);
// => true
date1.isAfter(date2);
// => false
किसी LocalDate इंस्टेंस में उससे समय के भाग निकालने के लिए गेटर मेथड होते हैं:
LocalDate date = LocalDate.of(2007, 12, 3);
date.getDayOfMonth();
// => 3
किसी LocalDate इंस्टेंस में उसमें समय की इकाइयाँ जोड़ने के लिए मेथड होते हैं:
ये मेथड एक नया LocalDate इंस्टेंस लौटाते हैं और मौजूदा इंस्टेंस को नहीं बदलते, क्योंकि LocalDate क्लास अपरिवर्तनीय है।
LocalDate date = LocalDate.of(2007, 12, 3);
date.plusDays(3);
// => 2007-12-06
LocalDateTimejava.time.LocalDateTime क्लास ISO-8601 कैलेंडर प्रणाली में बिना समय क्षेत्र वाले दिनांक-समय को दर्शाती है, जैसे 2007-12-03T10:15:30:
LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
आप किसी LocalDate इंस्टेंस को LocalDateTime में बदल सकते हैं:
LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"
String से और String में बदलते समय LocalDate और LocalDateTime दोनों ISO-8601 की मानक संकेतन प्रणाली इस्तेमाल करते हैं।
LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
LocalDateTime parsed = LocalDateTime.parse("2007-12-03T10:15:30");
datetime.isEqual(parsed);
// => true
किसी अलग फॉर्मेट का उपयोग करके इस तरह String से LocalDate या LocalDateTime को पार्स करने की कोशिश संभव नहीं है।
इसके बजाय, कस्टम फॉर्मेट से दिनांक फॉर्मेट करने के लिए आपको java.time.format.DateTimeFormatter का उपयोग करना चाहिए:
DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", parser);
DateTimeFormatter printer = DateTimeFormatter.ofPattern("MMMM d, yyyy");
printer.format(date);
// => "December 3, 2007"
कस्टम फॉर्मेट बनाते समय अलग-अलग क्षेत्रों के लिए फॉर्मेट करने और पार्स करने हेतु कोई लोकेल भी निर्दिष्ट की जा सकती है:
DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.FRENCH).format(date);
// => décembre 3, 2007
DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.of("pt")).format(date);
// => dezembro 3, 2007
इस अभ्यास में आप न्यूयॉर्क के एक ब्यूटी सैलून के लिए अपॉइंटमेंट शेड्यूलर पर काम करेंगे। यह सैलून 15 सितंबर 2012 को खुला था।
अपॉइंटमेंट की तारीख के टेक्स्ट रूप को पढ़कर उसे संबंधित LocalDateTime में बदलने के लिए AppointmentScheduler.schedule() मेथड लागू कीजिए:
AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.schedule("7/25/2019 13:45:00");
// => LocalDateTime.of(2019, 7, 25, 13, 45, 0)
AppointmentScheduler.hasPassed() मेथड लागू कीजिए, जो अपॉइंटमेंट की तारीख लेता है और जाँचता है कि अपॉइंटमेंट का समय कहीं अतीत में तो नहीं था:
AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.hasPassed(LocalDateTime.of(1999, 12, 31, 9, 0, 0));
// => true
AppointmentScheduler.isAfternoonAppointment() मेथड लागू कीजिए, जो अपॉइंटमेंट की तारीख लेता है और जाँचता है कि अपॉइंटमेंट दोपहर में है या नहीं (>= 12:00 और < 18:00):
AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.isAfternoonAppointment(LocalDateTime.of(2019, 03, 29, 15, 0, 0))
// => true
AppointmentScheduler.getDescription() मेथड लागू कीजिए, जो अपॉइंटमेंट की तारीख लेता है और उस तारीख और समय का विवरण लौटाता है:
AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.getDescription(LocalDateTime.of(2019, 03, 29, 15, 0, 0))
// => "You have an appointment on Friday, March 29, 2019, at 3:00 PM."
AppointmentScheduler.getAnniversaryDate() मेथड लागू कीजिए, जो इस साल की सालगिरह की तारीख लौटाता है, यानी 15 सितंबर:
AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.getAnniversaryDate()
// => LocalDate.of(<current year>, 9, 15)
Exercism पर साइन अप कीजिए और Java को 26 कॉन्सेप्ट158 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।