Instant কে ZonedDateTime বা LocalDateTime এ রূপান্তর করা

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

329

Instant, ZonedDateTime এবং LocalDateTime হল java.time প্যাকেজের গুরুত্বপূর্ণ ক্লাস। Instant একটি নির্দিষ্ট সময়ের মুহূর্ত (epoch time) ধারণ করে এবং UTC (Coordinated Universal Time) সময় অঞ্চলে সেটি প্রতিনিধিত্ব করে। অন্যদিকে, ZonedDateTime এবং LocalDateTime নির্দিষ্ট সময় অঞ্চলের সাথে বা নির্দিষ্ট সময় অঞ্চল ছাড়া স্থানীয় সময় ধারণ করে।

যেহেতু Instant একটি নির্দিষ্ট সময়কে epoch second হিসেবে রেকর্ড করে, তাই এটি ZonedDateTime বা LocalDateTime এ রূপান্তর করার জন্য কিছু অতিরিক্ত তথ্যের প্রয়োজন, যেমন সময় অঞ্চল।

1. Instant থেকে ZonedDateTime এ রূপান্তর

Instant কে ZonedDateTime এ রূপান্তর করতে ZoneId (যেমন ZoneId.of("Asia/Kolkata")) ব্যবহার করা হয়। এটি Instant কে একটি নির্দিষ্ট সময় অঞ্চলের স্থানীয় সময়ে রূপান্তরিত করে।

উদাহরণ: Instant কে ZonedDateTime এ রূপান্তর করা

import java.time.*;

public class InstantToZonedDateTime {
    public static void main(String[] args) {
        // Get the current instant (UTC time)
        Instant instant = Instant.now();
        System.out.println("Current Instant: " + instant);

        // Convert Instant to ZonedDateTime with specific timezone
        ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Asia/Kolkata"));
        System.out.println("ZonedDateTime in Asia/Kolkata: " + zonedDateTime);
    }
}

আউটপুট:

Current Instant: 2024-12-23T08:15:45.678Z
ZonedDateTime in Asia/Kolkata: 2024-12-23T13:45:45.678+05:30[Asia/Kolkata]

ব্যাখ্যা:

  • Instant.now(): এটি UTC সময়ে বর্তমান মুহূর্ত প্রদান করে।
  • instant.atZone(ZoneId.of("Asia/Kolkata")): Instant কে Asia/Kolkata সময় অঞ্চলের স্থানীয় সময়ে রূপান্তরিত করা হয়।

2. Instant থেকে LocalDateTime এ রূপান্তর

LocalDateTime শুধুমাত্র স্থানীয় সময় ধারণ করে এবং এতে কোনো সময় অঞ্চল নেই। তাই Instant কে LocalDateTime এ রূপান্তর করার জন্য একটি সময় অঞ্চল প্রদান করতে হবে। ZonedDateTime এর সাথে toLocalDateTime() মেথড ব্যবহার করে আপনি Instant কে LocalDateTime এ রূপান্তর করতে পারেন।

উদাহরণ: Instant কে LocalDateTime এ রূপান্তর করা

import java.time.*;

public class InstantToLocalDateTime {
    public static void main(String[] args) {
        // Get the current instant (UTC time)
        Instant instant = Instant.now();
        System.out.println("Current Instant: " + instant);

        // Convert Instant to ZonedDateTime with specific timezone (Asia/Kolkata)
        ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Asia/Kolkata"));

        // Convert ZonedDateTime to LocalDateTime (without time zone)
        LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();
        System.out.println("LocalDateTime in Asia/Kolkata: " + localDateTime);
    }
}

আউটপুট:

Current Instant: 2024-12-23T08:30:45.678Z
LocalDateTime in Asia/Kolkata: 2024-12-23T13:30:45.678

ব্যাখ্যা:

  • instant.atZone(ZoneId.of("Asia/Kolkata")): Instant কে Asia/Kolkata সময় অঞ্চলের সাথে ZonedDateTime এ রূপান্তর করা হয়েছে।
  • zonedDateTime.toLocalDateTime(): তারপর ZonedDateTime থেকে LocalDateTime এ রূপান্তর করা হয়েছে। এখানে LocalDateTime এ সময় অঞ্চল তথ্য হারিয়ে গেছে, এবং এটি শুধুমাত্র স্থানীয় সময় ধারণ করে।

3. ZonedDateTime এবং LocalDateTime থেকে Instant এ রূপান্তর

আপনি ZonedDateTime বা LocalDateTime থেকে Instant এ রূপান্তর করতে পারেন।

  • ZonedDateTime.toInstant(): এটি ZonedDateTime থেকে Instant এ রূপান্তর করে।
  • LocalDateTime.atZone(): এটি LocalDateTime কে ZonedDateTime এ রূপান্তর করে এবং পরে toInstant() ব্যবহার করে Instant তৈরি করতে হয়।

উদাহরণ: ZonedDateTime থেকে Instant এ রূপান্তর

import java.time.*;

public class ZonedDateTimeToInstant {
    public static void main(String[] args) {
        // Get the current ZonedDateTime with a specific time zone
        ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("America/New_York"));
        System.out.println("ZonedDateTime in New York: " + zonedDateTime);

        // Convert ZonedDateTime to Instant
        Instant instant = zonedDateTime.toInstant();
        System.out.println("Instant from ZonedDateTime: " + instant);
    }
}

আউটপুট:

ZonedDateTime in New York: 2024-12-23T03:45:00-05:00[America/New_York]
Instant from ZonedDateTime: 2024-12-23T08:45:00Z

ব্যাখ্যা:

  • ZonedDateTime.toInstant(): এটি ZonedDateTime কে UTC টাইমে একটি Instant এ রূপান্তরিত করেছে।

উদাহরণ: LocalDateTime থেকে Instant এ রূপান্তর

import java.time.*;

public class LocalDateTimeToInstant {
    public static void main(String[] args) {
        // Get the current LocalDateTime
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("LocalDateTime: " + localDateTime);

        // Convert LocalDateTime to ZonedDateTime with a specific time zone
        ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Kolkata"));

        // Convert ZonedDateTime to Instant
        Instant instant = zonedDateTime.toInstant();
        System.out.println("Instant from LocalDateTime: " + instant);
    }
}

আউটপুট:

LocalDateTime: 2024-12-23T14:45:00
Instant from LocalDateTime: 2024-12-23T09:15:00Z

ব্যাখ্যা:

  • LocalDateTime.atZone(ZoneId.of("Asia/Kolkata")): এটি LocalDateTime কে Asia/Kolkata সময় অঞ্চলের সাথে ZonedDateTime এ রূপান্তরিত করেছে।
  • toInstant(): পরে ZonedDateTime থেকে Instant তৈরি করা হয়েছে।

  • Instant থেকে ZonedDateTime বা LocalDateTime এ রূপান্তর করতে, আপনি atZone() ব্যবহার করে সময় অঞ্চল যুক্ত করতে পারেন এবং তারপর toLocalDateTime() বা toInstant() ব্যবহার করে প্রয়োজনীয় রূপান্তর করতে পারেন।
  • ZonedDateTime সময় অঞ্চল সহ স্থানীয় সময় ধারণ করে, যেখানে LocalDateTime কেবলমাত্র সময় এবং তারিখ ধারণ করে (কোনো সময় অঞ্চল ছাড়াই)।
Content added By
Promotion

Are you sure to start over?

Loading...