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.getYear();
// => 2007
date.getMonthValue();
// => 12
date.getDayOfMonth();
// => 3
एक LocalDate इंस्टेंस में उसमें समय की इकाइयाँ जोड़ने के लिए मेथड होते हैं।
ये मेथड एक नया LocalDate इंस्टेंस लौटाते हैं और मौजूदा इंस्टेंस को नहीं बदलते, क्योंकि LocalDate क्लास इम्यूटेबल है।
LocalDate date = LocalDate.of(2007, 12, 3);
date.plusDays(3);
// => 2007-12-06
date.plusMonths(1);
// => 2008-01-03
date.plusYears(1);
// => 2008-12-03
LocalDateTimejava.time.LocalDateTime क्लास ISO-8601 कैलेंडर सिस्टम में टाइम ज़ोन के बिना तारीख और समय को दर्शाता है, जैसे 2007-12-03T10:15:30:
LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
datetime.getYear();
// => 2007
datetime.getMonthValue();
// => 12
datetime.getDayOfMonth();
// => 3
datetime.getHours();
// => 10
datetime.getMinutes();
// => 15
datetime.getSeconds();
// => 30
LocalDate क्लास की तरह, LocalDateTime इंस्टेंस में भी दूसरे LocalDateTime से तुलना करने और उसमें समय की इकाइयाँ जोड़ने के लिए वही मेथड होते हैं।
किसी LocalDate इंस्टेंस को LocalDateTime में बदलना भी संभव है:
LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"
LocalDate और LocalDateTime, दोनों किसी String से और String में बदलते समय 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
इस तरह किसी अलग फॉर्मेट का इस्तेमाल करके LocalDate या LocalDateTime को String से पार्स करना संभव नहीं है।
इसके बजाय, कस्टम फॉर्मेट से तारीखें फॉर्मेट करने के लिए आपको java.time.format.DateTimeFormatter का उपयोग करना चाहिए:
DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", formatter);
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