ZonedDateTime
ক্লাসটি Java 8 থেকে java.time
প্যাকেজে প্রবর্তিত হয়েছে এবং এটি সময় এবং তারিখের সাথে টাইমজোনের তথ্য সংরক্ষণ এবং পরিচালনার জন্য ব্যবহৃত হয়। এটি একটি নির্দিষ্ট তারিখ, সময়, এবং টাইমজোন এর সমন্বয়ে কাজ করে, যা বৈশ্বিক সময় ব্যবস্থাপনায় অত্যন্ত উপকারী।
ZonedDateTime
ক্লাসের ব্যবহার:ZonedDateTime
ক্লাসটি LocalDateTime
এবং ZoneId
(টাইমজোনের তথ্য) এর সংমিশ্রণ। এটি সময় এবং তারিখের সাথে টাইমজোন ইনফরমেশন সঠিকভাবে ম্যানেজ করতে সাহায্য করে।
ZonedDateTime
ক্লাসের প্রধান ফিচারসমূহ:America/New_York
, Asia/Kolkata
ইত্যাদি।ZonedDateTime
এর তৈরি:ZonedDateTime
অবজেক্ট তৈরি করার জন্য ZonedDateTime.now()
, ZonedDateTime.of()
, বা ZonedDateTime.parse()
মেথড ব্যবহার করা যেতে পারে।
ZonedDateTime
:now()
: বর্তমান সময় এবং টাইমজোন সহ ZonedDateTime
অবজেক্ট তৈরি করে।of()
: নির্দিষ্ট তারিখ, সময় এবং টাইমজোন দিয়ে ZonedDateTime
তৈরি করে।parse()
: String
থেকে ZonedDateTime
অবজেক্ট তৈরি করে।plusXXX()
/ minusXXX()
: সময় যোগ বা কমানোর জন্য।withZoneSameInstant()
: টাইমজোন পরিবর্তন করে কিন্তু সময় অপরিবর্তিত রাখে।ZonedDateTime
এর উদাহরণ:now()
Method: বর্তমান তারিখ এবং সময় সহ ZonedDateTime তৈরি করাimport java.time.ZonedDateTime;
import java.time.ZoneId;
public class ZonedDateTimeExample {
public static void main(String[] args) {
// Get current date and time with system default zone
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println("Current Date and Time with Zone: " + zonedDateTime);
// Get current date and time with specific zone (e.g., UTC)
ZonedDateTime utcDateTime = ZonedDateTime.now(ZoneId.of("UTC"));
System.out.println("Current UTC Date and Time: " + utcDateTime);
}
}
Output:
Current Date and Time with Zone: 2024-12-23T10:15:30.123+05:30[Asia/Kolkata]
Current UTC Date and Time: 2024-12-23T04:45:30.123Z[UTC]
ব্যাখ্যা:
ZonedDateTime.now()
বর্তমান সময় এবং সিস্টেমের ডিফল্ট টাইমজোন (এখানে Asia/Kolkata
) সহ ZonedDateTime
অবজেক্ট রিটার্ন করে।ZoneId.of("UTC")
দিয়ে UTC টাইমজোনের সঙ্গে বর্তমান সময় পাওয়া গেছে।of()
Method: নির্দিষ্ট তারিখ, সময় এবং টাইমজোন সহ ZonedDateTime তৈরি করাimport java.time.ZonedDateTime;
import java.time.ZoneId;
public class ZonedDateTimeOfExample {
public static void main(String[] args) {
// Create ZonedDateTime with specific date, time, and zone
ZonedDateTime zonedDateTime = ZonedDateTime.of(2024, 12, 25, 15, 30, 0, 0, ZoneId.of("America/New_York"));
System.out.println("Specific Date, Time and Zone: " + zonedDateTime);
}
}
Output:
Specific Date, Time and Zone: 2024-12-25T15:30-05:00[America/New_York]
ব্যাখ্যা:
ZonedDateTime.of(2024, 12, 25, 15, 30, 0, 0, ZoneId.of("America/New_York"))
দিয়ে 2024 সালের 25 ডিসেম্বর, 15:30 (এস্তার্ন টাইম) তারিখ এবং সময় তৈরি করা হয়েছে।parse()
Method: String থেকে ZonedDateTime তৈরি করাimport java.time.ZonedDateTime;
public class ZonedDateTimeParseExample {
public static void main(String[] args) {
// Parse a string to ZonedDateTime
String dateTimeString = "2024-12-25T15:30:00+01:00[Europe/Paris]";
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateTimeString);
System.out.println("Parsed ZonedDateTime: " + zonedDateTime);
}
}
Output:
Parsed ZonedDateTime: 2024-12-25T15:30+01:00[Europe/Paris]
ব্যাখ্যা:
ZonedDateTime.parse()
মেথডটি একটি String
থেকে ZonedDateTime
অবজেক্ট তৈরি করে। এখানে "2024-12-25T15:30:00+01:00[Europe/Paris]"
স্ট্রিংটি প্যার্স করা হয়েছে।plusDays()
এবং minusDays()
Method: সময় যোগ এবং বিয়োগ করাimport java.time.ZonedDateTime;
public class ZonedDateTimePlusMinusExample {
public static void main(String[] args) {
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println("Current Date and Time: " + zonedDateTime);
// Add 5 days to the current date and time
ZonedDateTime futureDate = zonedDateTime.plusDays(5);
System.out.println("Future Date (after adding 5 days): " + futureDate);
// Subtract 3 days from the current date and time
ZonedDateTime pastDate = zonedDateTime.minusDays(3);
System.out.println("Past Date (after subtracting 3 days): " + pastDate);
}
}
Output:
Current Date and Time: 2024-12-23T10:45:30.123+05:30[Asia/Kolkata]
Future Date (after adding 5 days): 2024-12-28T10:45:30.123+05:30[Asia/Kolkata]
Past Date (after subtracting 3 days): 2024-12-20T10:45:30.123+05:30[Asia/Kolkata]
ব্যাখ্যা:
plusDays(5)
মেথড ব্যবহার করে 5 দিন যোগ করা হয়েছে এবং minusDays(3)
মেথড ব্যবহার করে 3 দিন বিয়োগ করা হয়েছে।withZoneSameInstant()
Method: টাইমজোন পরিবর্তন করাimport java.time.ZonedDateTime;
import java.time.ZoneId;
public class ZonedDateTimeZoneConversionExample {
public static void main(String[] args) {
// Get current time in UTC
ZonedDateTime utcDateTime = ZonedDateTime.now(ZoneId.of("UTC"));
System.out.println("Current Time in UTC: " + utcDateTime);
// Convert to Asia/Kolkata timezone
ZonedDateTime kolkataDateTime = utcDateTime.withZoneSameInstant(ZoneId.of("Asia/Kolkata"));
System.out.println("Converted Time in Asia/Kolkata: " + kolkataDateTime);
}
}
Output:
Current Time in UTC: 2024-12-23T05:15:30.123Z[UTC]
Converted Time in Asia/Kolkata: 2024-12-23T10:45:30.123+05:30[Asia/Kolkata]
ব্যাখ্যা:
withZoneSameInstant()
মেথডটি টাইমজোন পরিবর্তন করতে ব্যবহৃত হয়, কিন্তু সময় একই রাখে। এখানে UTC থেকে Asia/Kolkata
টাইমজোনে কনভার্ট করা হয়েছে।ZonedDateTime
ক্লাসটি LocalDateTime
এবং টাইমজোনের তথ্য একত্রিত করে, যা আপনার অ্যাপ্লিকেশনে সময় এবং তারিখের সঙ্গে টাইমজোনের পারফেক্ট সমন্বয় করতে সহায়তা করে।ZonedDateTime
এর সাথে আপনি সময় যোগ বা বিয়োগ করতে পারেন, টাইমজোন কনভার্ট করতে পারেন, এবং সঠিক টাইমজোনসহ তারিখ এবং সময় পরিচালনা করতে পারেন।ZonedDateTime
হল Java 8 এর java.time
প্যাকেজের একটি গুরুত্বপূর্ণ ক্লাস যা তারিখ এবং সময় সম্পর্কিত তথ্য পরিচালনা করতে ব্যবহৃত হয়, এবং এটি timezone সম্পর্কিত তথ্যও অন্তর্ভুক্ত করে। এটি LocalDateTime
এর মতো একটি তারিখ এবং সময় ধারণ করে, কিন্তু এতে টাইমজোন সম্পর্কিত তথ্যও থাকে, যার ফলে এটি বিভিন্ন টাইমজোনের মধ্যে সময়ের পার্থক্য নির্ধারণ করার জন্য উপযুক্ত।
আমরা যখন কোনো অ্যাপ্লিকেশন তৈরি করি যা বিশ্বব্যাপী বা বিভিন্ন টাইমজোনে কাজ করে, তখন ZonedDateTime ব্যবহারের প্রয়োজনীয়তা স্পষ্ট হয়ে ওঠে। কিছু উদাহরণ যেখানে ZonedDateTime ব্যবহারের প্রয়োজন হতে পারে:
ZonedDateTime
ক্লাসে timezone অন্তর্ভুক্ত থাকে, যা ZoneId
দ্বারা নির্ধারিত হয়। এটি নিশ্চিত করে যে সময় শুধুমাত্র স্থানীয় সময় নয়, বরং সেই টাইমজোনের সাথে সম্পর্কিত।ZonedDateTime
একটি immutable ক্লাস, যা একবার তৈরি হলে এর মান পরিবর্তন করা যায় না।now()
: বর্তমান স্থানীয় সময় এবং টাইমজোন সহ একটি ZonedDateTime
অবজেক্ট তৈরি করে।of()
: একটি নির্দিষ্ট তারিখ, সময় এবং টাইমজোন দিয়ে একটি ZonedDateTime
তৈরি করে।withZoneSameInstant(ZoneId zone)
: এটি একটি ZonedDateTime
অবজেক্টকে অন্য টাইমজোনে রূপান্তরিত করে।plusXXX()
এবং minusXXX()
: সময় যোগ বা বাদ দেওয়া, যেমন plusDays()
, minusMonths()
ইত্যাদি।getZone()
: টাইমজোন সম্পর্কিত তথ্য প্রদান করে।import java.time.ZonedDateTime;
import java.time.ZoneId;
public class ZonedDateTimeExample {
public static void main(String[] args) {
// Get current date and time with timezone
ZonedDateTime now = ZonedDateTime.now();
System.out.println("Current ZonedDateTime: " + now);
// Get current date and time with specific timezone (UTC)
ZonedDateTime utcNow = ZonedDateTime.now(ZoneId.of("UTC"));
System.out.println("Current ZonedDateTime in UTC: " + utcNow);
}
}
আউটপুট:
Current ZonedDateTime: 2024-12-23T12:15:30.123456+05:30[Asia/Kolkata]
Current ZonedDateTime in UTC: 2024-12-23T06:45:30.123456Z[UTC]
কোড বিশ্লেষণ:
ZonedDateTime.now()
: এটি সিস্টেমের ডিফল্ট টাইমজোন ব্যবহার করে বর্তমান ZonedDateTime
প্রদান করে।ZonedDateTime.now(ZoneId.of("UTC"))
: এটি UTC টাইমজোনে বর্তমান সময় প্রদান করে।import java.time.ZonedDateTime;
import java.time.ZoneId;
import java.time.Month;
public class SpecificZonedDateTimeExample {
public static void main(String[] args) {
// Creating a ZonedDateTime with specific date, time, and timezone
ZonedDateTime dateTime = ZonedDateTime.of(2024, 12, 25, 10, 30, 0, 0, ZoneId.of("America/New_York"));
System.out.println("Specific ZonedDateTime: " + dateTime);
}
}
আউটপুট:
Specific ZonedDateTime: 2024-12-25T10:30-05:00[America/New_York]
কোড বিশ্লেষণ:
ZonedDateTime.of()
: এখানে আমরা 2024-12-25
তারিখ, 10:30:00
সময় এবং America/New_York
টাইমজোন প্রদান করেছি।import java.time.ZonedDateTime;
import java.time.ZoneId;
public class TimezoneConversionExample {
public static void main(String[] args) {
// Current date and time in Asia/Kolkata timezone
ZonedDateTime kolkataTime = ZonedDateTime.now(ZoneId.of("Asia/Kolkata"));
System.out.println("Current time in Kolkata: " + kolkataTime);
// Convert to UTC
ZonedDateTime utcTime = kolkataTime.withZoneSameInstant(ZoneId.of("UTC"));
System.out.println("Converted time in UTC: " + utcTime);
}
}
আউটপুট:
Current time in Kolkata: 2024-12-23T12:15:30.123456+05:30[Asia/Kolkata]
Converted time in UTC: 2024-12-23T06:45:30.123456Z[UTC]
কোড বিশ্লেষণ:
withZoneSameInstant(ZoneId.of("UTC"))
: এই মেথডটি একই সময়ের মুহূর্তে সময়কে অন্য একটি টাইমজোনে রূপান্তরিত করে।import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
public class AddSubtractTimeExample {
public static void main(String[] args) {
ZonedDateTime dateTime = ZonedDateTime.now();
System.out.println("Current time: " + dateTime);
// Add 5 days
ZonedDateTime newDateTime = dateTime.plus(5, ChronoUnit.DAYS);
System.out.println("Time after 5 days: " + newDateTime);
// Subtract 2 hours
ZonedDateTime subtractedTime = dateTime.minus(2, ChronoUnit.HOURS);
System.out.println("Time after subtracting 2 hours: " + subtractedTime);
}
}
আউটপুট:
Current time: 2024-12-23T12:15:30.123456+05:30[Asia/Kolkata]
Time after 5 days: 2024-12-28T12:15:30.123456+05:30[Asia/Kolkata]
Time after subtracting 2 hours: 2024-12-23T10:15:30.123456+05:30[Asia/Kolkata]
কোড বিশ্লেষণ:
plus()
এবং minus()
মেথডগুলি ব্যবহার করে নির্দিষ্ট সময় যোগ এবং সময় বাদ দেওয়া হয়েছে।ChronoUnit.DAYS
এবং ChronoUnit.HOURS
ব্যবহার করে দিনে এবং ঘণ্টায় পরিবর্তন করা হয়েছে।ZonedDateTime
ব্যবহারের মাধ্যমে আপনি সময়ের সাথে সম্পর্কিত timezone নিশ্চিত করতে পারেন এবং একই সময়ের মধ্যে বিভিন্ন স্থানীয় সময়ের তুলনা করতে পারেন।ZonedDateTime
এর মাধ্যমে সঠিক সময়ে ইভেন্টটি সময় নির্ধারণ করতে পারবেন যা সমস্ত ব্যবহারকারীদের জন্য তাদের টাইমজোনের সাথে মেলে।ZonedDateTime
হল Java 8 এর একটি গুরুত্বপূর্ণ ক্লাস যা সময় এবং তারিখের সাথে timezone সম্পর্কিত তথ্য পরিচালনা করে। এটি LocalDateTime এর মতো সময় এবং তারিখ পরিচালনার পাশাপাশি টাইমজোন সম্পর্কিত প্রয়োজনীয়তাও পূরণ করে।ZonedDateTime
এর মাধ্যমে আপনি একাধিক টাইমজোনে কাজ করা, টাইমজোন রূপান্তর করা এবং সঠিক সময়ের হিসাব রাখা সহজে করতে পারবেন।Java Time Package (java.time) প্যাকেজটি Java 8 এ পরিচিত হয়েছে এবং এটি সময় এবং তারিখের সাথে কাজ করার জন্য একটি শক্তিশালী এবং পরিষ্কার API প্রদান করে। টাইম জোন (Time Zone) সমর্থিত তারিখ এবং সময় পরিচালনা করার জন্য java.time
প্যাকেজে বিভিন্ন ক্লাস রয়েছে, বিশেষ করে ZonedDateTime
এবং OffsetDateTime
ক্লাস, যা টাইমজোন সম্পর্কিত সময়ের তথ্য সংরক্ষণ এবং পরিচালনার জন্য ব্যবহার করা হয়।
টাইমজোনের জন্য Java 8 এ ZonedDateTime
এবং OffsetDateTime
ক্লাস দুটি খুবই গুরুত্বপূর্ণ। এই ক্লাসগুলি টাইমজোন নির্দিষ্ট সময় এবং টাইমজোন অফসেট সমর্থন করে, যা আপনাকে বিভিন্ন অঞ্চল (Time Zones) অনুযায়ী তারিখ এবং সময় পরিচালনা করতে সাহায্য করে।
ZonedDateTime
হলো একটি ক্লাস যা সময়ের সাথে টাইমজোন সম্পর্কিত তথ্যও ধারণ করে। এটি LocalDateTime এর মতো কাজ করে, তবে এতে টাইমজোন অন্তর্ভুক্ত থাকে এবং আপনি যে কোনো নির্দিষ্ট অঞ্চলের সময় এবং তারিখ পরিচালনা করতে পারেন।
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class ZonedDateTimeExample {
public static void main(String[] args) {
// Get current ZonedDateTime for the default time zone
ZonedDateTime now = ZonedDateTime.now();
System.out.println("Current DateTime (Default Zone): " + now);
// Get current ZonedDateTime for a specific time zone
ZonedDateTime tokyoTime = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
System.out.println("Tokyo DateTime: " + tokyoTime);
ZonedDateTime londonTime = ZonedDateTime.now(ZoneId.of("Europe/London"));
System.out.println("London DateTime: " + londonTime);
}
}
Current DateTime (Default Zone): 2024-12-23T09:30:00+05:00[Asia/Kolkata]
Tokyo DateTime: 2024-12-23T12:00:00+09:00[Asia/Tokyo]
London DateTime: 2024-12-23T04:00:00Z[Europe/London]
ব্যাখ্যা:
ZonedDateTime.now()
: এটি বর্তমান সময়টি আপনার সিস্টেমের ডিফল্ট টাইমজোনের মধ্যে ফেরত দেয়।ZonedDateTime.now(ZoneId.of("Asia/Tokyo"))
: এটি Asia/Tokyo
টাইমজোনের মধ্যে বর্তমান সময়টি ফেরত দেয়।ZoneId.of("Europe/London")
: এটি Europe/London
টাইমজোনের মধ্যে সময়টি ফেরত দেয়।OffsetDateTime
ক্লাসটি সময়ের সাথে টাইমজোন অফসেট সম্পর্কিত তথ্য ধারণ করে। এটি ZonedDateTime এর মতো কাজ করে, তবে এটি নির্দিষ্ট কোনো টাইমজোনের পরিবর্তে অফসেট (যেমন UTC+2) ব্যবহার করে।
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
public class OffsetDateTimeExample {
public static void main(String[] args) {
// Get current OffsetDateTime for the default time zone
OffsetDateTime now = OffsetDateTime.now();
System.out.println("Current DateTime (Default Offset): " + now);
// Get current OffsetDateTime with a specific offset (UTC+2)
OffsetDateTime offsetTime = OffsetDateTime.now(ZoneOffset.ofHours(2));
System.out.println("Offset DateTime (UTC+2): " + offsetTime);
}
}
Current DateTime (Default Offset): 2024-12-23T09:30:00+05:00
Offset DateTime (UTC+2): 2024-12-23T07:30:00+02:00
ব্যাখ্যা:
OffsetDateTime.now()
: এটি সিস্টেমের ডিফল্ট টাইমজোন অফসেটের সাথে বর্তমান সময় এবং তারিখ প্রদান করে।ZoneOffset.ofHours(2)
: এটি UTC+2
টাইম অফসেট প্রদান করে এবং এই সময়ের জন্য সময় ফেরত দেয়।ZoneId.of("Asia/Tokyo")
ব্যবহার করে নিশ্চিত করুন যে আপনার সময়টি সঠিক অঞ্চল অনুযায়ী হচ্ছে।ZonedDateTime
বা OffsetDateTime
ব্যবহার করার সময় যদি কোনো নির্দিষ্ট টাইমজোন প্রয়োজন না হয়, তবে UTC (ZoneOffset.UTC
) টাইমজোন ব্যবহার করুন। এটি আন্তর্জাতিকভাবে গ্রহণযোগ্য এবং পরিবেশের পার্থক্যকে সহজে পরিচালনা করতে সহায়তা করে।ZonedDateTime
ব্যবহার করে এক টাইমজোন থেকে অন্য টাইমজোনে সময় রূপান্তর করা যেতে পারে।ZonedDateTime.withZoneSameInstant()
ব্যবহার করুন এক সময়ের মধ্যে টাইমজোন পরিবর্তন করতে।import java.time.ZonedDateTime;
import java.time.ZoneId;
public class TimeZoneConversionExample {
public static void main(String[] args) {
// Get the current time in New York (Eastern Standard Time)
ZonedDateTime newYorkTime = ZonedDateTime.now(ZoneId.of("America/New_York"));
System.out.println("New York Time: " + newYorkTime);
// Convert the time to Tokyo
ZonedDateTime tokyoTime = newYorkTime.withZoneSameInstant(ZoneId.of("Asia/Tokyo"));
System.out.println("Tokyo Time (Converted from New York): " + tokyoTime);
}
}
New York Time: 2024-12-23T00:30:00-05:00[America/New_York]
Tokyo Time (Converted from New York): 2024-12-23T14:30:00+09:00[Asia/Tokyo]
ব্যাখ্যা:
withZoneSameInstant()
: এটি একই সময় বিন্দু (instant) রাখে, তবে টাইমজোন পরিবর্তন করে।ZonedDateTime
এবং OffsetDateTime
হল java.time
প্যাকেজের শক্তিশালী ক্লাস যা টাইমজোন এবং অফসেটের সাথে তারিখ এবং সময় পরিচালনা করতে সহায়তা করে।ZonedDateTime
ক্লাসটি পুরো টাইমজোন তথ্য সংরক্ষণ করে, যেমন Asia/Tokyo
, Europe/London
ইত্যাদি।OffsetDateTime
ক্লাসটি টাইমজোন অফসেট সংরক্ষণ করে (যেমন UTC+2), তবে নির্দিষ্ট টাইমজোনের নাম ধারণ করে না।ZonedDateTime
ক্লাসটি java.time
প্যাকেজের একটি গুরুত্বপূর্ণ অংশ যা নির্দিষ্ট সময় অঞ্চল (time zone) সহ তারিখ এবং সময় পরিচালনা করার জন্য ব্যবহৃত হয়। এটি একটি স্ট্যাটিক ক্লাস এবং ZonedDateTime
ব্যবহার করে আপনি তথ্য সংগ্রহ, সময়ের ম্যানিপুলেশন, এবং বিভিন্ন সময় অঞ্চলের মধ্যে তারিখ এবং সময়ের পরিবর্তন সহজেই করতে পারবেন।
ZonedDateTime
দিয়ে আপনি:
ZonedDateTime.now(ZoneId zone)
: একটি নির্দিষ্ট সময় অঞ্চলের বর্তমান তারিখ এবং সময় পাবেন।ZonedDateTime.of()
: নির্দিষ্ট তারিখ, সময় এবং সময় অঞ্চল দিয়ে একটি নতুন ZonedDateTime অবজেক্ট তৈরি করুন।ZonedDateTime.withZoneSameInstant(ZoneId zone)
: একটি নতুন সময় অঞ্চলে সময় কনভার্ট করুন।ZonedDateTime.plusHours(long hours)
এবং ZonedDateTime.minusHours(long hours)
: সময়ের উপর যোগ বা বিয়োগ করুন।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"))
: এটি এক সময় অঞ্চল থেকে অন্য সময় অঞ্চলে কনভার্ট করা হয়, কিন্তু একই মুহূর্তে সময়টি থাকে।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)
: বর্তমান সময় থেকে ৫ দিন বিয়োগ করা হয়েছে।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) হিসেবে প্রতিনিধিত্ব করে।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.time
প্যাকেজের অংশ হিসেবে অনেক সুবিধা নিয়ে এসেছে, যেমন নিরাপদ এবং সঠিক সময়ের হিসাব।Java.time Package Java 8-এ নতুন Date and Time API হিসাবে যুক্ত হয়েছে, যা সময় এবং তারিখের সাথে কাজ করার জন্য বেশ শক্তিশালী এবং ব্যবহারকারী বান্ধব একটি API প্রদান করে। এর মধ্যে ZoneOffset
এবং ZoneId
ক্লাস দুটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যেগুলি টাইমজোন সম্পর্কিত বিভিন্ন কাজ করতে সহায়তা করে।
ZoneId
একটি ক্লাস যা একটি নির্দিষ্ট টাইমজোনের প্রতিনিধিত্ব করে। এটি পৃথিবীর বিভিন্ন টাইমজোন (যেমন, America/New_York
, Europe/London
, Asia/Kolkata
) এবং UTC offset (যেমন, UTC+02:00
) নিয়ে কাজ করে। ZoneId
একটি নামযুক্ত টাইমজোনের প্রতিনিধিত্ব করে এবং এটি টাইমজোনের সাথে সম্পর্কিত সমস্ত কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়।ZoneId
ব্যবহার করে আপনি ZonedDateTime
তৈরি করতে পারেন, যা সময় এবং টাইমজোন উভয়কে একত্রে ধারণ করে।ZoneOffset
একটি ক্লাস যা নির্দিষ্ট একটি টাইমজোনের সাথে সম্পর্কিত UTC offset (যেমন, UTC+02:00
) প্রতিনিধিত্ব করে। এটি টুকরো টাইমজোন (offset), যেমন +05:30
, -03:00
, ইত্যাদি, ম্যানেজ করতে ব্যবহৃত হয়।ZoneOffset
সাধারণত ZonedDateTime
বা OffsetDateTime
এর জন্য UTC অফসেট নির্দেশ করতে ব্যবহৃত হয়।ZoneId
ব্যবহার করে আপনি পৃথিবীর বিভিন্ন টাইমজোনের মধ্যে কাজ করতে পারবেন। এটি ZonedDateTime
অথবা OffsetDateTime
এর সাথে ব্যবহৃত হয়ে বিভিন্ন টাইমজোনের সময়, তারিখ, এবং ফরম্যাট নির্ধারণে সাহায্য করে।
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);
}
}
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
তৈরি করে।ZoneOffset
ব্যবহার করে আপনি একটি নির্দিষ্ট টাইমজোনের UTC offset নির্ধারণ করতে পারেন। এটি OffsetDateTime
এর জন্য ব্যবহৃত হয় যেখানে টাইমজোনের পরিবর্তে শুধু UTC অফসেট (যেমন, UTC+05:30
, UTC-03:00
) ব্যবহার করা হয়।
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);
}
}
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
তৈরি করে।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
:+05:30
বা -03:00
। এটি OffsetDateTime
তৈরিতে ব্যবহৃত হয় এবং daylight saving time (DST) এর সাথে সম্পর্কিত নয়।Java 8 এর ZoneId
এবং ZoneOffset
ক্লাসগুলো আপনাকে টাইমজোন এবং UTC offset পরিচালনার জন্য শক্তিশালী এবং সহজ পদ্ধতি সরবরাহ করে, যা অনেক কার্যকরী এবং সঠিকভাবে টাইমজোন সম্পর্কিত ডেটা ম্যানিপুলেট করতে সাহায্য করে।
Read more