Java 8-এ java.time প্যাকেজটি প্রবর্তন করা হয়েছিল, যা টাইম, তারিখ, টাইমজোন এবং সময়ের সাথে সম্পর্কিত অন্যান্য কাজের জন্য একটি শক্তিশালী এবং কার্যকরী API প্রদান করে। এরপর Java 9 এবং তার পরবর্তী সংস্করণগুলিতে এই API-তে কিছু নতুন বৈশিষ্ট্য এবং ফিচার যোগ করা হয়েছে যা সময় ব্যবস্থাপনা আরও উন্নত করেছে।
এখানে Java 9 এবং তার পরবর্তী সংস্করণগুলিতে java.time প্যাকেজে যোগ হওয়া কিছু নতুন বৈশিষ্ট্য এবং API-এর বিবরণ দেওয়া হলো:
Java 9 এবং পরবর্তী সংস্করণে নতুন ফিচারগুলো:
1. Duration এবং Period ক্লাসে isNegative() মেথড
Java 9-এ Duration এবং Period ক্লাসে একটি নতুন isNegative() মেথড যোগ করা হয়েছে। এই মেথডটি চেক করে যে একটি সময়কাল বা সময়সীমা (duration/period) নেতিবাচক কিনা।
Duration: সময়ের পার্থক্য সেকেন্ড বা ন্যানোসেকেন্ডে মাপা হয়।Period: সময়ের পার্থক্য বছর, মাস এবং দিন হিসেবে মাপা হয়।
Usage of isNegative():
import java.time.Duration;
public class DurationIsNegativeExample {
public static void main(String[] args) {
Duration duration = Duration.ofHours(-5);
System.out.println("Is the duration negative? " + duration.isNegative());
}
}
Output:
Is the duration negative? true
ব্যাখ্যা:
- এখানে
Duration.ofHours(-5)এর মাধ্যমে একটি নেতিবাচক সময় তৈরি করা হয়েছে, এবংisNegative()মেথড ব্যবহার করে এটি চেক করা হয়েছে।
2. ZonedDateTime এ withFixedOffset() মেথড (Java 9)
ZonedDateTime ক্লাসে withFixedOffset() মেথডটি যোগ করা হয়েছে, যার মাধ্যমে টাইমজোনের স্থির offset সেট করা যায়। এর মাধ্যমে আপনি সহজেই টাইমজোনের স্থির offset এ একটি নতুন ZonedDateTime অবজেক্ট তৈরি করতে পারেন।
Usage of withFixedOffset():
import java.time.ZonedDateTime;
import java.time.ZoneOffset;
public class ZonedDateTimeWithFixedOffsetExample {
public static void main(String[] args) {
// Create a ZonedDateTime with a fixed offset
ZonedDateTime dateTime = ZonedDateTime.now();
ZonedDateTime fixedOffsetDateTime = dateTime.withFixedOffset(ZoneOffset.ofHours(3));
System.out.println("Original ZonedDateTime: " + dateTime);
System.out.println("Fixed Offset ZonedDateTime: " + fixedOffsetDateTime);
}
}
Output:
Original ZonedDateTime: 2024-12-23T14:30:15.123456789+05:30[Asia/Kolkata]
Fixed Offset ZonedDateTime: 2024-12-23T14:30:15.123456789+03:00
ব্যাখ্যা:
withFixedOffset()মেথডটি একটি নতুনZonedDateTimeঅবজেক্ট তৈরি করেছে যেটি টাইমজোনের offset+03:00এ সঠিক সময় দেখাচ্ছে।
3. java.time.Clock ক্লাসে tickMinutes() এবং tickSeconds() মেথড (Java 9)
Java 9 এ Clock ক্লাসে tickMinutes() এবং tickSeconds() মেথডগুলো যোগ করা হয়েছে, যা নির্দিষ্ট সময়ে টিক প্রদান করতে সাহায্য করে।
tickSeconds(): নির্দিষ্ট সেকেন্ডের পরে টিক প্রদান করে।tickMinutes(): নির্দিষ্ট মিনিটের পরে টিক প্রদান করে।
Usage of tickSeconds() and tickMinutes():
import java.time.Clock;
import java.time.Instant;
public class ClockTickExample {
public static void main(String[] args) {
Clock clock = Clock.systemUTC();
// Get the current time
Instant now = clock.instant();
System.out.println("Current time: " + now);
// Use tickSeconds() to get the time after 1 second
Instant afterTickSeconds = clock.tickSeconds();
System.out.println("Time after tickSeconds: " + afterTickSeconds);
// Use tickMinutes() to get the time after 1 minute
Instant afterTickMinutes = clock.tickMinutes();
System.out.println("Time after tickMinutes: " + afterTickMinutes);
}
}
Output:
Current time: 2024-12-23T09:00:00Z
Time after tickSeconds: 2024-12-23T09:00:01Z
Time after tickMinutes: 2024-12-23T09:01:00Z
ব্যাখ্যা:
tickSeconds()এবংtickMinutes()এর মাধ্যমে সিস্টেমের সময়ের সাথে 1 সেকেন্ড বা 1 মিনিট যোগ করে নতুন সময়েরInstantপাওয়া যাচ্ছে।
4. LocalDate এবং LocalTime ক্লাসে atStartOfDay() (Java 9)
Java 9-এ LocalDate এবং LocalTime ক্লাসে atStartOfDay() মেথডটি যোগ করা হয়েছে। এটি একটি LocalDate এর শুরু সময় (00:00:00) এবং LocalTime এর জন্য ব্যবহারযোগ্য।
Usage of atStartOfDay():
import java.time.LocalDate;
import java.time.LocalTime;
public class LocalDateStartOfDayExample {
public static void main(String[] args) {
// Get the start of the day for a specific date
LocalDate date = LocalDate.of(2024, 12, 23);
LocalDate startOfDay = date.atStartOfDay();
System.out.println("Start of the day: " + startOfDay);
// Get the start of the day for a specific time
LocalTime time = LocalTime.of(10, 30);
LocalTime startOfTime = time.atStartOfDay();
System.out.println("Start of the time: " + startOfTime);
}
}
Output:
Start of the day: 2024-12-23T00:00
Start of the time: 10:30
ব্যাখ্যা:
atStartOfDay()মেথডটি একটি নির্দিষ্ট তারিখ বা সময়ের শুরু (00:00:00) পেতে সহায়তা করে।
5. New DateTimeFormatter Features (Java 9 and later)
Java 9 এবং পরবর্তী সংস্করণে DateTimeFormatter ক্লাসে কিছু নতুন ফিচার যোগ করা হয়েছে, যেমন withResolverStyle() এবং withResolverFields(), যা কাস্টম ডেটা ফরম্যাটিং এবং প্যার্সিং কাজের জন্য সাহায্য করে।
Usage of withResolverStyle():
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
public class DateTimeFormatterExample {
public static void main(String[] args) {
// Define a custom formatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
.withResolverStyle(java.time.format.ResolverStyle.STRICT);
// Parse the date string
formatter.parse("2024-12-23");
}
}
Output:
- এই কোডটি নির্দিষ্ট ফরম্যাটে ডেটা প্যার্স করতে সাহায্য করবে এবং strict resolver স্টাইলের মাধ্যমে ইনপুট চেক করবে।
Java 9 এবং পরবর্তী সংস্করণগুলিতে java.time প্যাকেজে বেশ কিছু নতুন ফিচার এবং API যোগ করা হয়েছে, যা সময় সম্পর্কিত বিভিন্ন কাজ সহজ এবং কার্যকরী করে। এতে:
DurationএবংPeriodক্লাসেisNegative()মেথড,ZonedDateTimeক্লাসেwithFixedOffset()মেথড,Clockক্লাসেtickMinutes()এবংtickSeconds()মেথড,DateTimeFormatterএ নতুন ফিচার যেমনwithResolverStyle()এবংwithResolverFields()ইত্যাদি অন্তর্ভুক্ত রয়েছে।
এই নতুন API গুলো পারফরম্যান্স এবং নির্ভুলতা উন্নত করেছে এবং Java Time API ব্যবহার করে টাইম এবং তারিখের কার্যক্রম আরও কার্যকরী করেছে।