Java Time API এর মধ্যে ZoneId এবং ZoneOffset ক্লাসগুলো সময় অঞ্চলের (time zone) ধারণা এবং ব্যবহারের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলো java.time প্যাকেজের অংশ এবং ZonedDateTime এবং OffsetDateTime এর সাথে সম্পর্কিত।
1. ZoneId:
ZoneId হলো একটি নির্দিষ্ট সময় অঞ্চলের আইডি যা সাধারণত "Europe/London", "Asia/Tokyo", "America/New_York" ইত্যাদি হিসাবে নির্দিষ্ট করা হয়। এটি টাইম জোন এবং ডেলাইট সেভিংস টাইম (DST) সংক্রান্ত সমস্ত তথ্য ধারণ করে।
- ZoneId ব্যবহৃত হয় সময় নির্ধারণ করার জন্য এবং তা ZonedDateTime, OffsetDateTime-এ ব্যবহৃত হয়, যার মাধ্যমে নির্দিষ্ট সময় অঞ্চল অনুযায়ী তারিখ এবং সময় ব্যবস্থাপনা করা হয়।
ZoneId ব্যবহার উদাহরণ:
import java.time.*;
import java.time.format.DateTimeFormatter;
public class ZoneIdExample {
public static void main(String[] args) {
// Get current time in a specific time zone (e.g., New York)
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("America/New_York"));
System.out.println("Current Time in New York: " + zonedDateTime);
// Get current time in a specific time zone (e.g., Tokyo)
ZonedDateTime tokyoTime = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
System.out.println("Current Time in Tokyo: " + tokyoTime);
// Format the ZonedDateTime in a custom format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
String formattedDate = zonedDateTime.format(formatter);
System.out.println("Formatted Time in New York: " + formattedDate);
}
}
আউটপুট:
Current Time in New York: 2024-12-23T09:30:00-05:00[America/New_York]
Current Time in Tokyo: 2024-12-23T23:30:00+09:00[Asia/Tokyo]
Formatted Time in New York: 2024-12-23 09:30:00 EST
ব্যাখ্যা:
ZoneId.of("America/New_York"): এটি New York টাইম জোনের বর্তমান সময় দেখায়।ZoneIdটাইম জোনের জন্য একটি ইউনিক আইডি ধারণ করে যা সময় অঞ্চল সম্পর্কিত সমস্ত তথ্যকে সংজ্ঞায়িত করে।ZoneId.of("Asia/Tokyo"): এটি Tokyo টাইম জোনের সময় দেখায়।
2. ZoneOffset:
ZoneOffset হলো UTC (Coordinated Universal Time) এর সাথে সময় অঞ্চলের পার্থক্য বা অফসেট। এটি ঘণ্টা এবং মিনিট এর মধ্যে টাইম জোনের পার্থক্য প্রতিনিধিত্ব করে, যেমন +05:30, -08:00, ইত্যাদি।
ZoneOffset ব্যবহার করা হয়, যখন আপনি কোনো নির্দিষ্ট উপাদান (সময়ের পার্থক্য) ব্যবহার করে টাইম জোনের সময় হিসাব করতে চান।
ZoneOffset ব্যবহার উদাহরণ:
import java.time.*;
import java.time.format.DateTimeFormatter;
public class ZoneOffsetExample {
public static void main(String[] args) {
// Get current time with ZoneOffset (+05:30 for Kolkata)
OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.ofHoursMinutes(5, 30));
System.out.println("Current Time in Kolkata (UTC+05:30): " + offsetDateTime);
// Convert UTC time to different time zone using ZoneOffset
OffsetDateTime utcTime = OffsetDateTime.now(ZoneOffset.UTC); // UTC time
System.out.println("Current Time in UTC: " + utcTime);
// Format the OffsetDateTime
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss O");
String formattedDate = utcTime.format(formatter);
System.out.println("Formatted UTC Time: " + formattedDate);
}
}
আউটপুট:
Current Time in Kolkata (UTC+05:30): 2024-12-23T15:00:00+05:30
Current Time in UTC: 2024-12-23T09:30:00Z
Formatted UTC Time: 2024-12-23 09:30:00 UTC
ব্যাখ্যা:
ZoneOffset.ofHoursMinutes(5, 30): এখানেZoneOffsetএর মাধ্যমে কলকাতার টাইম জোন UTC+05:30 নির্ধারণ করা হয়েছে।OffsetDateTime.now(ZoneOffset.UTC): এটি UTC সময় জোনের বর্তমান সময় দেখায়।OffsetDateTimeটাইম স্ট্যাম্পে টাইম অঞ্চলের অফসেট নির্ধারণ করা হয়, যাZoneOffsetথেকে আসছে। এতেZ(Zulu time, অর্থাৎ UTC) দেখানো হয়, যেটি সময় অঞ্চলের জন্য নির্দিষ্ট অফসেট।
ZoneId এবং ZoneOffset এর মধ্যে পার্থক্য:
- ZoneId:
- ব্যবহার:
ZoneIdব্যবহার করা হয় যখন আপনি সময়ের অঞ্চলের নাম (যেমনAmerica/New_York,Asia/Tokyo) এর মাধ্যমে টাইম জোন নির্ধারণ করতে চান। - ফোকাস: এটি সময় অঞ্চল এবং ডেলাইট সেভিংস টাইম (DST) এর সাথে সম্পর্কিত। এটি অঞ্চল ভিত্তিক সময় পরিচালনা করে।
- ব্যবহার:
- ZoneOffset:
- ব্যবহার:
ZoneOffsetব্যবহার করা হয় যখন আপনি UTC থেকে সময়ের পার্থক্য (অফসেট) নির্দেশ করতে চান, যেমন+05:30,-02:00ইত্যাদি। - ফোকাস: এটি UTC (Coordinated Universal Time) এবং সময়ের পার্থক্য নিয়ে কাজ করে। এটি নির্দিষ্ট সময় অঞ্চল অনুযায়ী সময়ের পার্থক্য পরিচালনা করে।
- ব্যবহার:
সারাংশ:
- ZoneId এবং ZoneOffset উভয়ই সময় অঞ্চল সম্পর্কিত কাজ করার জন্য ব্যবহৃত হয়, তবে তাদের ব্যবহারের মধ্যে পার্থক্য রয়েছে।
- ZoneId টাইম জোনের নাম ব্যবহার করে সময় নির্ধারণ করতে সাহায্য করে, যেমন
America/New_York,Asia/Tokyoইত্যাদি, এবং এটি ডেলাইট সেভিংস টাইমও সমর্থন করে। - ZoneOffset UTC থেকে নির্দিষ্ট সময় অঞ্চলের পার্থক্য নির্দেশ করে এবং এটি ঘণ্টা এবং মিনিট হিসেবে ব্যবহৃত হয়, যেমন
+05:30,-03:00ইত্যাদি।
Read more