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"
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
এভাবে একটি ভিন্ন ফরম্যাট ব্যবহার করে 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
এই অনুশীলনীতে আপনি নিউ ইয়র্কের একটি বিউটি সেলুনের জন্য অ্যাপয়েন্টমেন্ট শিডিউলার নিয়ে কাজ করবেন, যেটি ২০১২ সালের ১৫ই সেপ্টেম্বর চালু হয়েছিল।
একটি অ্যাপয়েন্টমেন্ট তারিখের টেক্সট উপস্থাপনাকে সংশ্লিষ্ট 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() মেথডটি ইমপ্লিমেন্ট করুন, যা এই বছরের বার্ষিকীর তারিখ রিটার্ন করে, যা ১৫ই সেপ্টেম্বর:
AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.getAnniversaryDate()
// => LocalDate.of(<current year>, 9, 15)
Exercism-এ সাইন আপ করুন, Java ট্র্যাকের 26টি কনসেপ্ট158টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।