Java.time প্যাকেজটি Java 8 তে java.util.Date এবং java.util.Calendar এর পরিবর্তে একটি নতুন সময় এবং তারিখ API হিসেবে প্রবর্তিত হয়েছিল। এটি Java প্রোগ্রামিং ভাষায় তথ্য ও সময় ম্যানিপুলেশন করার জন্য একটি শক্তিশালী এবং কার্যকরী টুলসেট সরবরাহ করে। Java.time প্যাকেজটি মূলত ISO-8601 স্ট্যান্ডার্ডে ভিত্তি করে ডিজাইন করা হয়েছে এবং এটি একাধিক টাইম জোন, সময় ক্ষেত্র, এবং আরও অন্যান্য প্রয়োজনীয় সুবিধা প্রদান করে।
এটি সহজ, কার্যকর, এবং immutable (অপরিবর্তনীয়), যা ত্রুটি কমানোর পাশাপাশি আরও সঠিক ফলাফল প্রদান করে।
Java.time প্যাকেজের সুবিধা:
- Immutable এবং Thread-Safe:
- Java.time API-এর সব ক্লাস immutable, অর্থাৎ একবার একটি অবজেক্ট তৈরি হলে তার মান পরিবর্তন করা যায় না। এর ফলে মাল্টি-থ্রেডিং প্রোগ্রামে নিরাপত্তা নিশ্চিত করা হয়।
- উদাহরণ:
LocalDate,LocalTime,LocalDateTimeইত্যাদি সব immutable।
- ISO-8601 স্ট্যান্ডার্ড অনুসরণ:
- Java.time API-টি ISO-8601 স্ট্যান্ডার্ড অনুসরণ করে, যা আন্তর্জাতিক সময় এবং তারিখের জন্য একটি অভ্যন্তরীণ মান নির্ধারণ করে। এটি টাইমস্ট্যাম্প এবং তারিখ ফরম্যাটিংকে খুবই সোজা এবং সঠিক করে তোলে।
- উদাহরণ:
2024-12-23T14:00:00(ISO-8601 ফরম্যাট)
- Date and Time API (Java 8 onwards):
- LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Instant, Duration, Period, ইত্যাদি ক্লাসগুলি খুবই কার্যকরী এবং সহজেই সময় এবং তারিখের মান ম্যানিপুলেট করতে সাহায্য করে।
- Time Zone Support:
- Java.time API আন্তর্জাতিক টাইম জোনের জন্য পূর্ণ সমর্থন প্রদান করে। আপনি
ZonedDateTimeব্যবহার করে নির্দিষ্ট টাইম জোনে সময় এবং তারিখ ম্যানিপুলেট করতে পারেন। - উদাহরণ:
ZonedDateTime.now(ZoneId.of("America/New_York"))
- Java.time API আন্তর্জাতিক টাইম জোনের জন্য পূর্ণ সমর্থন প্রদান করে। আপনি
- Durations এবং Periods:
- Duration এবং Period ক্লাসের মাধ্যমে আপনি সময় এবং তারিখের মধ্যে পার্থক্য নির্ধারণ করতে পারেন।
Durationসাধারণত time-based calculations এর জন্য ব্যবহার হয়, যেমন ঘণ্টা, মিনিট, সেকেন্ড এবংPerioddate-based calculations এর জন্য, যেমন বছর, মাস এবং দিন।
- Duration এবং Period ক্লাসের মাধ্যমে আপনি সময় এবং তারিখের মধ্যে পার্থক্য নির্ধারণ করতে পারেন।
- Clock and Instant:
- Instant ক্লাসের মাধ্যমে আপনি UTC টাইমস্ট্যাম্প পেতে পারেন যা দ্বিতীয় বা মিলিসেকেন্ডে পরিমাপ করা হয়।
- Clock ক্লাসের মাধ্যমে সিস্টেম ক্লক অ্যাক্সেস করা হয়, যা মূলত বর্তমান সময় জানাতে ব্যবহৃত হয়।
- Better Time Manipulation:
- Java.time API দিয়ে সময় এবং তারিখের যোগ-বিয়োগ, তুলনা, পরিবর্তন, ফরম্যাটিং খুবই সহজ এবং শক্তিশালীভাবে করা যায়।
Java.time প্যাকেজের কিছু গুরুত্বপূর্ণ ক্লাস:
LocalDate:- এটি সময় ছাড়াই স্থানীয় তারিখ ধারণ করে (যেমন: 2024-12-23)। টাইমজোন বা সময়ের ধারণা এতে নেই।
LocalDate date = LocalDate.now(); // Current date LocalDate specificDate = LocalDate.of(2024, 12, 23); // Specific dateLocalTime:- এটি স্থানীয় সময় ধারণ করে (যেমন: 14:30:00) যা নির্দিষ্ট একটি দিনের সময় প্রতিনিধিত্ব করে।
LocalTime time = LocalTime.now(); // Current time LocalTime specificTime = LocalTime.of(14, 30); // Specific timeLocalDateTime:- এটি স্থানীয় তারিখ ও সময় উভয়কেই ধারণ করে (যেমন: 2024-12-23T14:30:00)।
LocalDateTime dateTime = LocalDateTime.now(); // Current date and time LocalDateTime specificDateTime = LocalDateTime.of(2024, 12, 23, 14, 30); // Specific date and timeZonedDateTime:- এটি একটি নির্দিষ্ট টাইম জোনের তারিখ এবং সময় ধারণ করে (যেমন: 2024-12-23T14:30:00+01:00[Europe/Paris])।
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("America/New_York"));Instant:- এটি UTC টাইমস্ট্যাম্প ধারণ করে, যা এখনকার সময় বা কোনও নির্দিষ্ট সময়ের স্থানীয় সময় হিসেবে ব্যবহার করা যায়।
Instant now = Instant.now(); // Current timestamp in UTCDuration:- এটি দুইটি সময়ের মধ্যে পার্থক্য হিসাব করে এবং time-based calculations এর জন্য ব্যবহৃত হয়।
Duration duration = Duration.ofHours(5); // Duration of 5 hoursPeriod:- এটি দুইটি তারিখের মধ্যে পার্থক্য হিসাব করে এবং date-based calculations এর জন্য ব্যবহৃত হয়।
Period period = Period.ofDays(10); // Period of 10 days
Java.time প্যাকেজের কিছু সাধারণ সুবিধা:
- এটি Immutable: Java.time API ক্লাসগুলো সমস্ত Immutable, অর্থাৎ একবার একটি অবজেক্ট তৈরি হলে তার মান পরিবর্তন করা যায় না। ফলে এটি Multithreading অ্যাপ্লিকেশনগুলোর জন্য নিরাপদ।
- স্ট্যান্ডার্ড সময় ফরম্যাটিং এবং পার্সিং: Java.time API ISO-8601 এর মান অনুসরণ করে, ফলে সময় এবং তারিখের ফরম্যাটিং ও পার্সিং খুবই সহজ এবং ইউনিফর্ম।
- টাইমজোন সাপোর্ট:
ZonedDateTimeব্যবহার করে আপনি সহজেই বিশ্বের যেকোনো টাইমজোনের জন্য সময় পেতে পারেন এবং টাইমজোন সম্পর্কিত গণনা করতে পারেন। - কমপ্লেক্স টাইম-ভিত্তিক গণনা: Duration এবং Period ব্যবহার করে আপনি সময়ে পার্থক্য বের করতে পারেন এবং তা যোগ-বিয়োগ করতে পারেন।
- সাধারণ স্ট্রিং ম্যানিপুলেশন:
DateTimeFormatterব্যবহার করে আপনি Date এবং Time এর ফরম্যাটিং খুব সহজেই করতে পারেন।
Java.time প্যাকেজের উদাহরণ:
তিনটি তারিখের মধ্যে পার্থক্য বের করা (Duration এবং Period ব্যবহার করে)
import java.time.*;
import java.time.temporal.ChronoUnit;
public class TimeDifferenceExample {
public static void main(String[] args) {
// Create two LocalDate objects
LocalDate startDate = LocalDate.of(2024, 1, 1);
LocalDate endDate = LocalDate.of(2024, 12, 23);
// Calculate the period between the two dates
Period period = Period.between(startDate, endDate);
System.out.println("Period: " + period.getYears() + " years, " + period.getMonths() + " months, " + period.getDays() + " days");
// Calculate the duration between two times
LocalTime startTime = LocalTime.of(8, 30);
LocalTime endTime = LocalTime.of(17, 0);
Duration duration = Duration.between(startTime, endTime);
System.out.println("Duration: " + duration.toHours() + " hours and " + duration.toMinutes() % 60 + " minutes.");
}
}
আউটপুট:
Period: 0 years, 11 months, 22 days
Duration: 8 hours and 30 minutes.
- Java.time প্যাকেজটি অত্যন্ত শক্তিশালী এবং কার্যকরী যা সময় এবং তারিখ ম্যানিপুলেশন সহজ করে তোলে।
- এটি immutable, thread-safe, এবং ISO-8601 স্ট্যান্ডার্ড অনুসরণ করে।
- এতে টাইমজোন, Duration, Period, Instant, ZonedDateTime ইত্যাদি ক্লাসগুলি অন্তর্ভুক্ত রয়েছে যা সময় এবং তারিখের ক্ষেত্রে নানা ধরণের অপারেশন সহজ করে তোলে।
Java.time প্যাকেজটি আধুনিক Java অ্যাপ্লিকেশনগুলির জন্য সময় এবং তারিখের কাজগুলি যথাযথভাবে পরিচালনা করার জন্য একটি অপরিহার্য টুলসেট।
Read more