ZonedDateTime ক্লাসটি java.time প্যাকেজের একটি গুরুত্বপূর্ণ অংশ যা নির্দিষ্ট সময় অঞ্চল (time zone) সহ তারিখ এবং সময় পরিচালনা করার জন্য ব্যবহৃত হয়। এটি একটি স্ট্যাটিক ক্লাস এবং ZonedDateTime ব্যবহার করে আপনি তথ্য সংগ্রহ, সময়ের ম্যানিপুলেশন, এবং বিভিন্ন সময় অঞ্চলের মধ্যে তারিখ এবং সময়ের পরিবর্তন সহজেই করতে পারবেন।
ZonedDateTime এর মাধ্যমে বিভিন্ন Time Zone এ তারিখ ও সময় ম্যানিপুলেশন:
ZonedDateTime দিয়ে আপনি:
- বিভিন্ন সময় অঞ্চলের তারিখ এবং সময় পাবেন।
- স্থানীয় সময় অঞ্চল পরিবর্তন করতে পারবেন।
- সময়ের পার্থক্য বা কনভারশন করতে পারবেন।
ZonedDateTime এর মূল মেথডসমূহ:
ZonedDateTime.now(ZoneId zone): একটি নির্দিষ্ট সময় অঞ্চলের বর্তমান তারিখ এবং সময় পাবেন।ZonedDateTime.of(): নির্দিষ্ট তারিখ, সময় এবং সময় অঞ্চল দিয়ে একটি নতুন ZonedDateTime অবজেক্ট তৈরি করুন।ZonedDateTime.withZoneSameInstant(ZoneId zone): একটি নতুন সময় অঞ্চলে সময় কনভার্ট করুন।ZonedDateTime.plusHours(long hours)এবংZonedDateTime.minusHours(long hours): সময়ের উপর যোগ বা বিয়োগ করুন।
উদাহরণ: ZonedDateTime এর মাধ্যমে বিভিন্ন সময় অঞ্চলের তারিখ এবং সময় ম্যানিপুলেশন
1. বর্তমান ZonedDateTime পাওয়া এবং বিভিন্ন Time Zone এ সময় পরিবর্তন:
import java.time.*;
import java.time.format.DateTimeFormatter;
public class ZonedDateTimeExample {
public static void main(String[] args) {
// Get the current date and time in the system default time zone
ZonedDateTime currentDateTime = ZonedDateTime.now();
System.out.println("Current Date and Time (System Default): " + currentDateTime);
// Get the current date and time in a specific time zone (e.g., New York)
ZonedDateTime newYorkDateTime = ZonedDateTime.now(ZoneId.of("America/New_York"));
System.out.println("Current Date and Time in New York: " + newYorkDateTime);
// Get the current date and time in another time zone (e.g., Tokyo)
ZonedDateTime tokyoDateTime = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
System.out.println("Current Date and Time in Tokyo: " + tokyoDateTime);
// Convert a time from one zone to another
ZonedDateTime convertedDateTime = currentDateTime.withZoneSameInstant(ZoneId.of("Europe/London"));
System.out.println("Converted Date and Time to London: " + convertedDateTime);
// Format and display in a readable form
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
System.out.println("Formatted New York Time: " + newYorkDateTime.format(formatter));
}
}
আউটপুট:
Current Date and Time (System Default): 2024-12-23T12:34:56.789+05:30[Asia/Kolkata]
Current Date and Time in New York: 2024-12-23T02:34:56.789-05:00[America/New_York]
Current Date and Time in Tokyo: 2024-12-23T15:34:56.789+09:00[Asia/Tokyo]
Converted Date and Time to London: 2024-12-23T07:34:56.789Z[Europe/London]
Formatted New York Time: 2024-12-23 02:34:56 EST
ব্যাখ্যা:
ZonedDateTime.now(): এটি সিস্টেমের ডিফল্ট সময় অঞ্চল থেকে বর্তমান সময় এবং তারিখ প্রদান করে।ZonedDateTime.now(ZoneId.of("America/New_York")): এটিNew Yorkটাইম জোনে বর্তমান সময় প্রদান করে।withZoneSameInstant(ZoneId.of("Europe/London")): এটি এক সময় অঞ্চল থেকে অন্য সময় অঞ্চলে কনভার্ট করা হয়, কিন্তু একই মুহূর্তে সময়টি থাকে।
2. ZonedDateTime এর মাধ্যমে সময় যোগ বা বিয়োগ করা:
import java.time.*;
public class ZonedDateTimeManipulation {
public static void main(String[] args) {
// Get current ZonedDateTime
ZonedDateTime currentDateTime = ZonedDateTime.now();
System.out.println("Current Date and Time: " + currentDateTime);
// Add 3 hours to the current time
ZonedDateTime newTime = currentDateTime.plusHours(3);
System.out.println("After adding 3 hours: " + newTime);
// Subtract 5 days from the current time
ZonedDateTime newDate = currentDateTime.minusDays(5);
System.out.println("After subtracting 5 days: " + newDate);
}
}
আউটপুট:
Current Date and Time: 2024-12-23T12:34:56.789+05:30[Asia/Kolkata]
After adding 3 hours: 2024-12-23T15:34:56.789+05:30[Asia/Kolkata]
After subtracting 5 days: 2024-12-18T12:34:56.789+05:30[Asia/Kolkata]
ব্যাখ্যা:
plusHours(3): বর্তমান সময়ে ৩ ঘণ্টা যোগ করা হয়েছে।minusDays(5): বর্তমান সময় থেকে ৫ দিন বিয়োগ করা হয়েছে।
3. ZonedDateTime থেকে Instant এ কনভার্ট করা:
Instant ক্লাসটি UTC সময়ের একটি নির্দিষ্ট মুহূর্ত (সময়সীমা) ধারণ করে এবং এটি একটি ZonedDateTime থেকে instant বা epoch টাইমস্ট্যাম্পে কনভার্ট করতে ব্যবহৃত হতে পারে।
import java.time.*;
public class ZonedDateTimeToInstant {
public static void main(String[] args) {
// Get current ZonedDateTime
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println("ZonedDateTime: " + zonedDateTime);
// Convert ZonedDateTime to Instant
Instant instant = zonedDateTime.toInstant();
System.out.println("Converted Instant: " + instant);
}
}
আউটপুট:
ZonedDateTime: 2024-12-23T12:34:56.789+05:30[Asia/Kolkata]
Converted Instant: 2024-12-23T07:04:56.789Z
ব্যাখ্যা:
toInstant(): এটিZonedDateTimeকে একটিInstant-এ কনভার্ট করে, যা UTC সময় অঞ্চলে নির্দিষ্ট মুহূর্ত (epoch time) হিসেবে প্রতিনিধিত্ব করে।
4. ZonedDateTime এর সাহায্যে সময়ে পার্থক্য বের করা:
import java.time.*;
public class ZonedDateTimeDifference {
public static void main(String[] args) {
// Define two ZonedDateTime objects
ZonedDateTime firstTime = ZonedDateTime.of(2024, 12, 23, 10, 0, 0, 0, ZoneId.of("Asia/Kolkata"));
ZonedDateTime secondTime = ZonedDateTime.of(2024, 12, 23, 15, 0, 0, 0, ZoneId.of("Asia/Kolkata"));
// Calculate the difference in hours
Duration duration = Duration.between(firstTime, secondTime);
System.out.println("Time difference in hours: " + duration.toHours());
}
}
আউটপুট:
Time difference in hours: 5
ব্যাখ্যা:
Duration.between(firstTime, secondTime): এটি দুটিZonedDateTimeএর মধ্যে সময়ের পার্থক্য হিসাব করে, এবং এখানে আমরা ঘণ্টা হিসেবে সময় পার্থক্য দেখাচ্ছি।
ZonedDateTimeক্লাসটি সময় অঞ্চল সহ তারিখ এবং সময় ম্যানিপুলেশন করতে সাহায্য করে।- এটি ব্যবহারের মাধ্যমে আপনি বিশ্বের বিভিন্ন সময় অঞ্চলের মধ্যে সময় পরিবর্তন, সময়ের পার্থক্য, সময়ের যোগ-বিয়োগ এবং বিভিন্ন সময় অঞ্চলের জন্য কনভার্শন সহজে করতে পারেন।
- এটি Java 8 থেকে
java.timeপ্যাকেজের অংশ হিসেবে অনেক সুবিধা নিয়ে এসেছে, যেমন নিরাপদ এবং সঠিক সময়ের হিসাব।
Content added By
Read more