পুরনো java.util.Date এবং java.util.Calendar কে নতুন API তে রূপান্তর করা

Compatibility with Legacy Date/Time API - জাভা টাইম প্যাকেজ (Java.time Package) - Java Technologies

276

Java 8-এ java.time প্যাকেজের অন্তর্ভুক্তির মাধ্যমে LocalDate, LocalTime, ZonedDateTime, Instant এবং DateTimeFormatter এর মতো নতুন API প্রদান করা হয়েছে, যা টাইম এবং তারিখের কাজের জন্য অনেক শক্তিশালী এবং কার্যকরী। এর আগে java.util.Date এবং java.util.Calendar ছিল Java-তে তারিখ এবং সময় পরিচালনার জন্য প্রধান API। তবে, এই পুরনো ক্লাসগুলো অনেক সীমাবদ্ধতা এবং জটিলতা নিয়ে আসে, যার ফলে Java 8 এর পর java.time প্যাকেজটি একটি অত্যন্ত উন্নত এবং সহজ API প্রদান করে।

java.util.Date এবং java.util.Calendar এর সীমাবদ্ধতা:

  • java.util.Date ক্লাসটি নিজে mutable (পরিবর্তনযোগ্য) হওয়ার কারণে স্ট্রিংয়ের মতো একে সরাসরি ব্যবহার করা কঠিন এবং টাইমজোন ম্যানেজমেন্টে সমস্যা সৃষ্টি করতে পারে।
  • java.util.Calendar ক্লাসটি অত্যন্ত জটিল এবং এতে অনেক অপ্রয়োজনীয় মেথড ছিল।
  • java.util.Date এবং java.util.Calendar টাইমজোন ম্যানেজমেন্টের জন্য উপযুক্ত নয়, এবং তারা সঠিক সময় প্রক্রিয়াকরণের জন্য নির্ভরযোগ্য নয়।

Java 8 এর নতুন API: java.time প্যাকেজ

  • LocalDate, LocalTime, ZonedDateTime, Instant, DateTimeFormatter এবং Clock প্রভৃতি নতুন ক্লাসগুলির মাধ্যমে immutable (অপরিবর্তনযোগ্য) টাইম অবজেক্ট তৈরি করা যায়, যা অনেক বেশি কার্যকরী এবং নির্ভরযোগ্য।

java.util.Date এবং java.util.Calendar কে নতুন API তে রূপান্তর করার জন্য মেথড:

1. java.util.Date থেকে java.time.LocalDate অথবা java.time.Instant এ রূপান্তর

java.util.Date একটি পুরনো টাইম API, এবং Instant একটি নতুন API যা সময়কে UTC টাইমজোনে epoch second হিসেবে প্রতিনিধিত্ব করে।

java.util.Date থেকে Instant এ রূপান্তর:
import java.util.Date;
import java.time.Instant;

public class DateToInstantExample {
    public static void main(String[] args) {
        // Get current date using java.util.Date
        Date oldDate = new Date();
        System.out.println("Old Date (java.util.Date): " + oldDate);

        // Convert java.util.Date to Instant
        Instant instant = oldDate.toInstant();
        System.out.println("Converted Instant: " + instant);
    }
}

Output:

Old Date (java.util.Date): Mon Dec 23 10:30:15 IST 2024
Converted Instant: 2024-12-23T05:00:15Z

ব্যাখ্যা:

  • toInstant() মেথডটি java.util.Date অবজেক্ট থেকে Instant তৈরি করে। এখানে, Instant UTC টাইমজোনে সময়কে প্রতিনিধিত্ব করে, যা পৃথিবীর সকল অঞ্চলের জন্য সঠিক।
java.util.Date থেকে LocalDate বা LocalDateTime এ রূপান্তর:
import java.util.Date;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;

public class DateToLocalDateExample {
    public static void main(String[] args) {
        // Get current date using java.util.Date
        Date oldDate = new Date();
        System.out.println("Old Date (java.util.Date): " + oldDate);

        // Convert java.util.Date to LocalDate
        LocalDate localDate = oldDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        System.out.println("Converted LocalDate: " + localDate);

        // Convert java.util.Date to LocalDateTime
        LocalDateTime localDateTime = oldDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        System.out.println("Converted LocalDateTime: " + localDateTime);
    }
}

Output:

Old Date (java.util.Date): Mon Dec 23 10:30:15 IST 2024
Converted LocalDate: 2024-12-23
Converted LocalDateTime: 2024-12-23T10:30:15.123

ব্যাখ্যা:

  • toInstant() মেথড ব্যবহার করে java.util.Date থেকে Instant তৈরি করা হয়েছে, তারপর .atZone(ZoneId.systemDefault()) ব্যবহার করে ZonedDateTime এ রূপান্তর করা হয়েছে এবং toLocalDate() বা toLocalDateTime() মেথড ব্যবহার করে LocalDate বা LocalDateTime এ রূপান্তর করা হয়েছে।

2. java.util.Calendar থেকে java.time.LocalDateTime বা java.time.ZonedDateTime এ রূপান্তর

java.util.Calendar ক্লাসটি পুরনো সময় API, এবং এটি নির্দিষ্ট টাইমজোন ও ক্যালেন্ডার ডেটার হিসাব করতে ব্যবহৃত হয়। তবে এটি immutable নয় এবং টাইমজোনের সাথে কাজ করার ক্ষেত্রে সীমাবদ্ধ।

java.util.Calendar থেকে ZonedDateTime এ রূপান্তর:
import java.util.Calendar;
import java.time.ZonedDateTime;
import java.time.ZoneId;

public class CalendarToZonedDateTimeExample {
    public static void main(String[] args) {
        // Get current Calendar instance
        Calendar calendar = Calendar.getInstance();
        System.out.println("Old Calendar Date: " + calendar.getTime());

        // Convert Calendar to ZonedDateTime
        ZonedDateTime zonedDateTime = calendar.toInstant().atZone(ZoneId.systemDefault());
        System.out.println("Converted ZonedDateTime: " + zonedDateTime);
    }
}

Output:

Old Calendar Date: Mon Dec 23 10:30:15 IST 2024
Converted ZonedDateTime: 2024-12-23T10:30:15.123+05:30[Asia/Kolkata]

ব্যাখ্যা:

  • toInstant() মেথড ব্যবহার করে Calendar অবজেক্ট থেকে Instant তৈরি করা হয়েছে, তারপর atZone(ZoneId.systemDefault()) ব্যবহার করে ZonedDateTime এ রূপান্তর করা হয়েছে।
java.util.Calendar থেকে LocalDateTime এ রূপান্তর:
import java.util.Calendar;
import java.time.LocalDateTime;
import java.time.ZoneId;

public class CalendarToLocalDateTimeExample {
    public static void main(String[] args) {
        // Get current Calendar instance
        Calendar calendar = Calendar.getInstance();
        System.out.println("Old Calendar Date: " + calendar.getTime());

        // Convert Calendar to LocalDateTime
        LocalDateTime localDateTime = calendar.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        System.out.println("Converted LocalDateTime: " + localDateTime);
    }
}

Output:

Old Calendar Date: Mon Dec 23 10:30:15 IST 2024
Converted LocalDateTime: 2024-12-23T10:30:15.123

ব্যাখ্যা:

  • toInstant() এবং atZone() ব্যবহার করে Calendar অবজেক্ট থেকে LocalDateTime তৈরি করা হয়েছে।

  1. java.util.Date এবং java.util.Calendar এর toInstant() মেথড ব্যবহার করে সহজেই নতুন Java Time API-তে রূপান্তর করা যায়।
  2. নতুন java.time API তে LocalDate, LocalDateTime, ZonedDateTime ইত্যাদি ক্লাস রয়েছে, যা টাইমজোন ম্যানেজমেন্ট এবং সময়ের অপারেশন সহজতর করে।
  3. java.util.Date এবং java.util.Calendar থেকে Instant এবং ZonedDateTime তে রূপান্তর করার মাধ্যমে আপনি নতুন API এর সুবিধাগুলি পুরোপুরি উপভোগ করতে পারেন, যেমন immutable objects, time zone handling ইত্যাদি।

এটি Java 8 এর java.time প্যাকেজের মাধ্যমে টাইম এবং তারিখের কাজের প্রক্রিয়া আরো সহজ এবং নির্ভরযোগ্য করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...