ডে

ডেট-টাইম মধ্যে Java

6টি অনুশীলনী

ডেট-টাইম সম্পর্কে

Java 8-এ চালু হওয়া java.time প্যাকেজে তারিখ ও সময় নিয়ে কাজ করার জন্য বেশ কিছু ক্লাস রয়েছে।

LocalDate

java.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 ইনস্ট্যান্সে সময়ের একক যোগ করার মেথডও থাকে।

Note

এই মেথডগুলো একটি নতুন 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

LocalDateTime

java.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
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি নতুন একটি উইন্ডো বা ট্যাবে খুলবে

ডেট-টাইম শিখুন