Java 8-এ java.time প্যাকেজটি একটি নতুন API হিসেবে যোগ করা হয়, যা সময় এবং তারিখ সম্পর্কিত কাজকে আরও সহজ, শক্তিশালী এবং নির্ভরযোগ্য করতে সাহায্য করে। এর পূর্বে, java.util.Date এবং java.util.Calendar ক্লাসগুলির সঙ্গে কাজ করতে Java ডেভেলপারদের বেশ কিছু সমস্যার সম্মুখীন হতে হতো, যেমন তারিখের পরিসংখ্যান, টাইম জোন, ডেটার বিভিন্ন ফরম্যাট, ইত্যাদি। java.time প্যাকেজে এই সকল সমস্যার সমাধান প্রদান করা হয়েছে এবং এটি তারিখ এবং সময়ের সাথে কাজ করার জন্য অনেক সুবিধাজনক ক্লাস সরবরাহ করে।
java.time প্যাকেজে বেশ কয়েকটি ক্লাস এবং ইন্টারফেস রয়েছে যা সময় এবং তারিখের বিভিন্ন দিককে হ্যান্ডেল করতে সক্ষম। এর মধ্যে প্রধান ক্লাসগুলো হল:
LocalDate: শুধুমাত্র তারিখ (যেমন বছর, মাস, দিন)LocalTime: শুধুমাত্র সময় (যেমন ঘণ্টা, মিনিট, সেকেন্ড)LocalDateTime: তারিখ এবং সময় উভয়ইZonedDateTime: তারিখ, সময় এবং টাইম জোনInstant: সময়ের একটি নির্দিষ্ট মুহূর্তDuration: দুটিInstantএর মধ্যে সময়ের পার্থক্যPeriod: দুটিLocalDateএর মধ্যে তারিখের পার্থক্য
java.time প্যাকেজের প্রধান ক্লাসসমূহ এবং তাদের ব্যবহার
১. LocalDate
LocalDate ক্লাসটি একটি তারিখকে প্রতিনিধিত্ব করে, তবে এটি কোনো সময় বা টাইম জোনের ধারণা ধারণ করে না। এটি সাধারণত জন্ম তারিখ, বিশেষ ইভেন্ট বা নির্দিষ্ট দিনগুলোর জন্য ব্যবহৃত হয়।
Syntax:
LocalDate date = LocalDate.of(2024, 11, 15);
System.out.println(date); // 2024-11-15ব্যবহার উদাহরণ:
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
System.out.println("Today's Date: " + today);
LocalDate specificDate = LocalDate.of(2024, 11, 15);
System.out.println("Specific Date: " + specificDate);
}
}২. LocalTime
LocalTime ক্লাসটি সময় প্রতিনিধিত্ব করে, তবে এটি তারিখের কোনো ধারণা ধারণ করে না। এটি ঘন্টা, মিনিট, সেকেন্ড, মাইক্রোসেকেন্ড পর্যন্ত সময় হ্যান্ডেল করে।
Syntax:
LocalTime time = LocalTime.of(14, 30);
System.out.println(time); // 14:30ব্যবহার উদাহরণ:
import java.time.LocalTime;
public class Main {
public static void main(String[] args) {
LocalTime now = LocalTime.now();
System.out.println("Current Time: " + now);
LocalTime specificTime = LocalTime.of(15, 45);
System.out.println("Specific Time: " + specificTime);
}
}৩. LocalDateTime
LocalDateTime ক্লাসটি LocalDate এবং LocalTime এর সংমিশ্রণ। এটি তারিখ এবং সময় উভয়কেই একসাথে ধারণ করে, তবে টাইম জোনের ধারণা এটির মধ্যে নেই।
Syntax:
LocalDateTime dateTime = LocalDateTime.of(2024, 11, 15, 14, 30);
System.out.println(dateTime); // 2024-11-15T14:30ব্যবহার উদাহরণ:
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
LocalDateTime currentDateTime = LocalDateTime.now();
System.out.println("Current Date and Time: " + currentDateTime);
LocalDateTime specificDateTime = LocalDateTime.of(2024, 11, 15, 14, 30);
System.out.println("Specific Date and Time: " + specificDateTime);
}
}৪. ZonedDateTime
ZonedDateTime ক্লাসটি তারিখ, সময় এবং টাইম জোনের সাথে সম্পর্কিত একটি পূর্ণ তথ্য প্রদান করে। এটি বিশ্বব্যাপী বিভিন্ন টাইম জোনে কাজ করার জন্য গুরুত্বপূর্ণ।
Syntax:
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println(zonedDateTime);ব্যবহার উদাহরণ:
import java.time.ZonedDateTime;
import java.time.ZoneId;
public class Main {
public static void main(String[] args) {
ZonedDateTime zonedNow = ZonedDateTime.now();
System.out.println("ZonedDateTime Now: " + zonedNow);
ZonedDateTime specificZonedDateTime = ZonedDateTime.of(2024, 11, 15, 14, 30, 0, 0, ZoneId.of("Asia/Dhaka"));
System.out.println("Specific ZonedDateTime: " + specificZonedDateTime);
}
}৫. Instant
Instant ক্লাসটি একটি নির্দিষ্ট মুহূর্তকে সময়ের পরিমাপ হিসেবে seconds বা nanoseconds হিসাবে প্রতিনিধিত্ব করে। এটি সাধারণত টাইমস্ট্যাম্প হিসেবে ব্যবহৃত হয়।
Syntax:
Instant instant = Instant.now();
System.out.println(instant); // Current time in UTCব্যবহার উদাহরণ:
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant now = Instant.now();
System.out.println("Current Instant: " + now);
}
}৬. Duration
Duration ক্লাসটি দুটি Instant বা LocalTime এর মধ্যে সময়ের পার্থক্যকে পরিমাপ করতে ব্যবহৃত হয়। এটি সেকেন্ড এবং ন্যানোসেকেন্ডে পরিমাপ করা হয়।
Syntax:
Duration duration = Duration.between(startTime, endTime);ব্যবহার উদাহরণ:
import java.time.Duration;
import java.time.LocalTime;
public class Main {
public static void main(String[] args) {
LocalTime start = LocalTime.of(14, 30);
LocalTime end = LocalTime.of(16, 45);
Duration duration = Duration.between(start, end);
System.out.println("Duration: " + duration.toMinutes() + " minutes");
}
}৭. Period
Period ক্লাসটি দুটি LocalDate এর মধ্যে তারিখের পার্থক্যকে পরিমাপ করতে ব্যবহৃত হয়। এটি years, months, এবং days এ পরিমাপ করা হয়।
Syntax:
Period period = Period.between(startDate, endDate);ব্যবহার উদাহরণ:
import java.time.LocalDate;
import java.time.Period;
public class Main {
public static void main(String[] args) {
LocalDate start = LocalDate.of(2020, 1, 1);
LocalDate end = LocalDate.of(2024, 11, 15);
Period period = Period.between(start, end);
System.out.println("Period: " + period.getYears() + " years, " + period.getMonths() + " months, " + period.getDays() + " days");
}
}সারসংক্ষেপ
Java 8 এর java.time প্যাকেজটি সময় এবং তারিখ সম্পর্কিত কাজের জন্য অনেক শক্তিশালী এবং নির্ভরযোগ্য API প্রদান করে। এর মাধ্যমে, LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Instant, Duration, এবং Period ইত্যাদি ক্লাস ব্যবহার করে সময় এবং তারিখের সাথে সম্পর্কিত বিভিন্ন অপারেশন খুবই সহজে করা যায়। এটি immutable এবং thread-safe, যা পূর্ববর্তী java.util.Date এবং java.util.Calendar এর তুলনায় অনেক বেশি কার্যকরী এবং নির্ভরযোগ্য।
Read more