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তৈরি করে। এখানে,InstantUTC টাইমজোনে সময়কে প্রতিনিধিত্ব করে, যা পৃথিবীর সকল অঞ্চলের জন্য সঠিক।
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তৈরি করা হয়েছে।
java.util.Dateএবংjava.util.CalendarএরtoInstant()মেথড ব্যবহার করে সহজেই নতুন Java Time API-তে রূপান্তর করা যায়।- নতুন
java.timeAPI তেLocalDate,LocalDateTime,ZonedDateTimeইত্যাদি ক্লাস রয়েছে, যা টাইমজোন ম্যানেজমেন্ট এবং সময়ের অপারেশন সহজতর করে। java.util.Dateএবংjava.util.CalendarথেকেInstantএবংZonedDateTimeতে রূপান্তর করার মাধ্যমে আপনি নতুন API এর সুবিধাগুলি পুরোপুরি উপভোগ করতে পারেন, যেমন immutable objects, time zone handling ইত্যাদি।
এটি Java 8 এর java.time প্যাকেজের মাধ্যমে টাইম এবং তারিখের কাজের প্রক্রিয়া আরো সহজ এবং নির্ভরযোগ্য করে তোলে।
Read more