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"
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", 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