ZoneOffset এবং ZoneId এর ব্যবহার

ZonedDateTime Class - জাভা টাইম প্যাকেজ (Java.time Package) - Java Technologies

322

Java.time Package Java 8-এ নতুন Date and Time API হিসাবে যুক্ত হয়েছে, যা সময় এবং তারিখের সাথে কাজ করার জন্য বেশ শক্তিশালী এবং ব্যবহারকারী বান্ধব একটি API প্রদান করে। এর মধ্যে ZoneOffset এবং ZoneId ক্লাস দুটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যেগুলি টাইমজোন সম্পর্কিত বিভিন্ন কাজ করতে সহায়তা করে।

ZoneOffset এবং ZoneId এর পরিচিতি:

  1. ZoneId:
    • ZoneId একটি ক্লাস যা একটি নির্দিষ্ট টাইমজোনের প্রতিনিধিত্ব করে। এটি পৃথিবীর বিভিন্ন টাইমজোন (যেমন, America/New_York, Europe/London, Asia/Kolkata) এবং UTC offset (যেমন, UTC+02:00) নিয়ে কাজ করে। ZoneId একটি নামযুক্ত টাইমজোনের প্রতিনিধিত্ব করে এবং এটি টাইমজোনের সাথে সম্পর্কিত সমস্ত কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়।
    • ZoneId ব্যবহার করে আপনি ZonedDateTime তৈরি করতে পারেন, যা সময় এবং টাইমজোন উভয়কে একত্রে ধারণ করে।
  2. 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 এর মধ্যে পার্থক্য:

FeatureZoneIdZoneOffset
DefinitionRepresents a timezone ID (e.g., America/New_York, Asia/Kolkata)Represents the offset from UTC (e.g., +05:30, -03:00)
UsageUsed to represent a complete timezone with daylight saving time (DST)Used to represent only UTC offset without considering DST
ExampleZoneId.of("Asia/Kolkata")ZoneOffset.ofHours(5)
Time RepresentationCan represent complete timezone information, including daylight savingOnly represents offset without daylight saving
ClassZoneIdZoneOffset

  1. ZoneId:
    • ব্যবহার করা হয় যখন আপনি একটি পূর্ণ টাইমজোনের তথ্য চান, যেমন Asia/Kolkata বা America/New_York। এটি daylight saving time (DST) এর উপর ভিত্তি করে কাজ করে এবং ZonedDateTime বা OffsetDateTime তৈরিতে ব্যবহৃত হয়।
  2. ZoneOffset:
    • এটি নির্দিষ্ট UTC offset এর সাথে কাজ করে, যেমন +05:30 বা -03:00। এটি OffsetDateTime তৈরিতে ব্যবহৃত হয় এবং daylight saving time (DST) এর সাথে সম্পর্কিত নয়।

Java 8 এর ZoneId এবং ZoneOffset ক্লাসগুলো আপনাকে টাইমজোন এবং UTC offset পরিচালনার জন্য শক্তিশালী এবং সহজ পদ্ধতি সরবরাহ করে, যা অনেক কার্যকরী এবং সঠিকভাবে টাইমজোন সম্পর্কিত ডেটা ম্যানিপুলেট করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...