Java.time Package Java 8-এ নতুন Date and Time API হিসাবে যুক্ত হয়েছে, যা সময় এবং তারিখের সাথে কাজ করার জন্য বেশ শক্তিশালী এবং ব্যবহারকারী বান্ধব একটি API প্রদান করে। এর মধ্যে ZoneOffset এবং ZoneId ক্লাস দুটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যেগুলি টাইমজোন সম্পর্কিত বিভিন্ন কাজ করতে সহায়তা করে।
ZoneOffset এবং ZoneId এর পরিচিতি:
- ZoneId:
ZoneIdএকটি ক্লাস যা একটি নির্দিষ্ট টাইমজোনের প্রতিনিধিত্ব করে। এটি পৃথিবীর বিভিন্ন টাইমজোন (যেমন,America/New_York,Europe/London,Asia/Kolkata) এবং UTC offset (যেমন,UTC+02:00) নিয়ে কাজ করে।ZoneIdএকটি নামযুক্ত টাইমজোনের প্রতিনিধিত্ব করে এবং এটি টাইমজোনের সাথে সম্পর্কিত সমস্ত কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়।ZoneIdব্যবহার করে আপনিZonedDateTimeতৈরি করতে পারেন, যা সময় এবং টাইমজোন উভয়কে একত্রে ধারণ করে।
- ZoneOffset:
ZoneOffsetএকটি ক্লাস যা নির্দিষ্ট একটি টাইমজোনের সাথে সম্পর্কিত UTC offset (যেমন,UTC+02:00) প্রতিনিধিত্ব করে। এটি টুকরো টাইমজোন (offset), যেমন+05:30,-03:00, ইত্যাদি, ম্যানেজ করতে ব্যবহৃত হয়।ZoneOffsetসাধারণতZonedDateTimeবাOffsetDateTimeএর জন্য UTC অফসেট নির্দেশ করতে ব্যবহৃত হয়।
ZoneId এবং ZoneOffset এর ব্যবহার:
1. ZoneId:
ZoneId ব্যবহার করে আপনি পৃথিবীর বিভিন্ন টাইমজোনের মধ্যে কাজ করতে পারবেন। এটি ZonedDateTime অথবা OffsetDateTime এর সাথে ব্যবহৃত হয়ে বিভিন্ন টাইমজোনের সময়, তারিখ, এবং ফরম্যাট নির্ধারণে সাহায্য করে।
Example 1: ZoneId ব্যবহার করে ZonedDateTime তৈরি করা:
import java.time.*;
public class ZoneIdExample {
public static void main(String[] args) {
// Get current time with specific ZoneId
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("Asia/Kolkata"));
System.out.println("Current DateTime in Asia/Kolkata: " + zonedDateTime);
// Convert current time to New York time zone
ZonedDateTime newYorkTime = ZonedDateTime.now(ZoneId.of("America/New_York"));
System.out.println("Current DateTime in America/New_York: " + newYorkTime);
// Get ZonedDateTime for a specific date and time with a ZoneId
ZonedDateTime specificTime = ZonedDateTime.of(2024, 12, 23, 14, 30, 0, 0, ZoneId.of("Europe/London"));
System.out.println("Specific DateTime in Europe/London: " + specificTime);
}
}
Output:
Current DateTime in Asia/Kolkata: 2024-12-23T14:30:00+05:30[Asia/Kolkata]
Current DateTime in America/New_York: 2024-12-23T06:30:00-05:00[America/New_York]
Specific DateTime in Europe/London: 2024-12-23T14:30+00:00[Europe/London]
ব্যাখ্যা:
ZoneId.of("Asia/Kolkata"): এটি কলকাতা টাইমজোনেরZoneIdতৈরি করে।ZonedDateTime.now(ZoneId): এটি নির্দিষ্ট টাইমজোনে বর্তমান তারিখ এবং সময় নির্ধারণ করে।ZonedDateTime.of(): এটি একটি নির্দিষ্ট সময় এবং তারিখের সাথে টাইমজোন যোগ করে একটিZonedDateTimeতৈরি করে।
2. ZoneOffset:
ZoneOffset ব্যবহার করে আপনি একটি নির্দিষ্ট টাইমজোনের UTC offset নির্ধারণ করতে পারেন। এটি OffsetDateTime এর জন্য ব্যবহৃত হয় যেখানে টাইমজোনের পরিবর্তে শুধু UTC অফসেট (যেমন, UTC+05:30, UTC-03:00) ব্যবহার করা হয়।
Example 2: ZoneOffset ব্যবহার করে OffsetDateTime তৈরি করা:
import java.time.*;
public class ZoneOffsetExample {
public static void main(String[] args) {
// Current time with UTC offset +05:30
ZoneOffset offset = ZoneOffset.ofHoursMinutes(5, 30); // UTC+05:30
OffsetDateTime offsetDateTime = OffsetDateTime.now(offset);
System.out.println("Current OffsetDateTime (UTC+05:30): " + offsetDateTime);
// Offset with specific hours and minutes (UTC-03:00)
ZoneOffset negativeOffset = ZoneOffset.ofHours(-3);
OffsetDateTime negativeOffsetDateTime = OffsetDateTime.now(negativeOffset);
System.out.println("Current OffsetDateTime (UTC-03:00): " + negativeOffsetDateTime);
// Create specific OffsetDateTime with a custom offset
OffsetDateTime specificOffsetDateTime = OffsetDateTime.of(2024, 12, 23, 14, 30, 0, 0, ZoneOffset.of("+02:00"));
System.out.println("Specific OffsetDateTime (UTC+02:00): " + specificOffsetDateTime);
}
}
Output:
Current OffsetDateTime (UTC+05:30): 2024-12-23T14:30:00+05:30
Current OffsetDateTime (UTC-03:00): 2024-12-23T06:30:00-03:00
Specific OffsetDateTime (UTC+02:00): 2024-12-23T14:30+02:00
ব্যাখ্যা:
ZoneOffset.ofHoursMinutes(5, 30): এটিUTC+05:30অফসেট তৈরি করে।OffsetDateTime.now(offset): এটি একটি নির্দিষ্ট UTC offset এর সাথে বর্তমান তারিখ এবং সময় নির্ধারণ করে।OffsetDateTime.of(): এটি একটি নির্দিষ্ট তারিখ, সময় এবং UTC offset দিয়েOffsetDateTimeতৈরি করে।
3. ZoneOffset এবং ZoneId এর মধ্যে পার্থক্য:
| Feature | ZoneId | ZoneOffset |
|---|---|---|
| Definition | Represents a timezone ID (e.g., America/New_York, Asia/Kolkata) | Represents the offset from UTC (e.g., +05:30, -03:00) |
| Usage | Used to represent a complete timezone with daylight saving time (DST) | Used to represent only UTC offset without considering DST |
| Example | ZoneId.of("Asia/Kolkata") | ZoneOffset.ofHours(5) |
| Time Representation | Can represent complete timezone information, including daylight saving | Only represents offset without daylight saving |
| Class | ZoneId | ZoneOffset |
ZoneId:- ব্যবহার করা হয় যখন আপনি একটি পূর্ণ টাইমজোনের তথ্য চান, যেমন
Asia/KolkataবাAmerica/New_York। এটি daylight saving time (DST) এর উপর ভিত্তি করে কাজ করে এবংZonedDateTimeবাOffsetDateTimeতৈরিতে ব্যবহৃত হয়।
- ব্যবহার করা হয় যখন আপনি একটি পূর্ণ টাইমজোনের তথ্য চান, যেমন
ZoneOffset:- এটি নির্দিষ্ট UTC offset এর সাথে কাজ করে, যেমন
+05:30বা-03:00। এটিOffsetDateTimeতৈরিতে ব্যবহৃত হয় এবং daylight saving time (DST) এর সাথে সম্পর্কিত নয়।
- এটি নির্দিষ্ট UTC offset এর সাথে কাজ করে, যেমন
Java 8 এর ZoneId এবং ZoneOffset ক্লাসগুলো আপনাকে টাইমজোন এবং UTC offset পরিচালনার জন্য শক্তিশালী এবং সহজ পদ্ধতি সরবরাহ করে, যা অনেক কার্যকরী এবং সঠিকভাবে টাইমজোন সম্পর্কিত ডেটা ম্যানিপুলেট করতে সাহায্য করে।
Read more