Java 8 এ java.time
প্যাকেজ চালু হওয়ার পর থেকে, এটি অনেক উন্নত এবং সঠিক তারিখ এবং সময় সম্পর্কিত কাজ করার উপায় প্রদান করেছে। কিন্তু অনেক পুরনো Java Date/Time API, যেমন java.util.Date
, java.util.Calendar
, এবং java.text.SimpleDateFormat
, এখনও ব্যাপকভাবে ব্যবহৃত হচ্ছে অনেক পুরানো কোডবেসে। তাই Java 8 এর java.time
প্যাকেজ এবং ঐ পুরনো API গুলোর মধ্যে কম্প্যাটিবিলিটি নিশ্চিত করার জন্য কিছু গুরুত্বপূর্ণ ব্যবস্থা নেওয়া হয়েছে।
এখানে আলোচনা করা হবে java.time
প্যাকেজের Legacy Date/Time API এর সাথে কম্প্যাটিবিলিটি এবং তাদের মধ্যে Conversion কিভাবে করা যায়।
java.util.Date
থেকে java.time.LocalDate
এ কনভার্শনjava.util.Date
পুরনো Java Date API এর একটি প্রধান ক্লাস, যা java.time
প্যাকেজের LocalDate
, LocalDateTime
, ZonedDateTime
ইত্যাদি ক্লাসে কনভার্ট করা যেতে পারে।
Date
থেকে LocalDate
কনভার্ট করাimport java.util.Date;
import java.time.LocalDate;
import java.time.ZoneId;
public class DateToLocalDateExample {
public static void main(String[] args) {
// Get current date using legacy Date API
Date legacyDate = new Date();
System.out.println("Legacy Date: " + legacyDate);
// Convert legacy Date to LocalDate
LocalDate localDate = legacyDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("Converted LocalDate: " + localDate);
}
}
Legacy Date: Mon Dec 23 10:15:32 IST 2024
Converted LocalDate: 2024-12-23
ব্যাখ্যা:
Date.toInstant()
: java.util.Date
এর Instant
এ কনভার্ট করা হয়।atZone(ZoneId.systemDefault())
: এটি সিস্টেমের লোকাল টাইম জোনে সময় কনভার্ট করে।toLocalDate()
: LocalDate
তে কনভার্ট করে।java.util.Calendar
থেকে java.time.LocalDateTime
এ কনভার্শনCalendar
ক্লাসটি java.util.Date
এর উন্নত সংস্করণ, যা তারিখ এবং সময় সম্পর্কিত আরও উন্নত কার্যকারিতা প্রদান করে। আপনি Calendar
থেকে LocalDateTime
বা ZonedDateTime
তে কনভার্ট করতে পারেন।
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("Legacy Calendar: " + calendar.getTime());
// Convert Calendar to LocalDateTime
LocalDateTime localDateTime = calendar.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("Converted LocalDateTime: " + localDateTime);
}
}
Legacy Calendar: Mon Dec 23 10:15:32 IST 2024
Converted LocalDateTime: 2024-12-23T10:15:32.123
ব্যাখ্যা:
Calendar.toInstant()
: Calendar
অবজেক্টকে Instant
এ কনভার্ট করে।atZone(ZoneId.systemDefault())
: সিস্টেমের লোকাল টাইম জোনে কনভার্ট করে।toLocalDateTime()
: LocalDateTime
তে কনভার্ট করে।java.text.SimpleDateFormat
থেকে java.time.format.DateTimeFormatter
এ কনভার্শনSimpleDateFormat
পুরনো Java এর Date/Time Formatting এর জন্য ব্যবহৃত হয়। আপনি SimpleDateFormat
এর সাহায্যে ফরম্যাটেড তারিখ পেলে, সেই তারিখটি DateTimeFormatter
এর মাধ্যমে LocalDate
, LocalDateTime
, ZonedDateTime
ইত্যাদি ক্লাসে কনভার্ট করতে পারেন।
SimpleDateFormat
থেকে DateTimeFormatter
তে কনভার্ট করাimport java.text.SimpleDateFormat;
import java.util.Date;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class SimpleDateFormatToDateTimeFormatterExample {
public static void main(String[] args) throws Exception {
// Use SimpleDateFormat to parse a date string
String dateStr = "2024-12-23 10:15:32";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = simpleDateFormat.parse(dateStr);
System.out.println("Legacy Date: " + date);
// Convert Date to LocalDateTime using DateTimeFormatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(dateStr, formatter);
System.out.println("Converted LocalDateTime: " + localDateTime);
}
}
Legacy Date: Mon Dec 23 10:15:32 IST 2024
Converted LocalDateTime: 2024-12-23T10:15:32
ব্যাখ্যা:
SimpleDateFormat.parse()
: এটি String
থেকে Date
অবজেক্ট তৈরি করে।DateTimeFormatter.ofPattern()
: এটি একটি DateTimeFormatter
তৈরি করে।LocalDateTime.parse()
: এটি ফরম্যাটেড তারিখের স্ট্রিং থেকে LocalDateTime
অবজেক্ট তৈরি করে।java.time
and Legacy APIsjava.time
এবং পুরনো java.util.Date
, java.util.Calendar
এর মধ্যে কম্প্যাটিবিলিটি অনেক সহজ। আপনি Instant
, LocalDateTime
, বা ZonedDateTime
এর মাধ্যমে সময় সম্পর্কিত মানকে Date
অথবা Calendar
এর মধ্যে কনভার্ট করতে পারেন।
Date
to Instant
Conversion:import java.time.Instant;
import java.util.Date;
public class LegacyDateToInstant {
public static void main(String[] args) {
Date legacyDate = new Date(); // Legacy Date object
Instant instant = legacyDate.toInstant(); // Convert Date to Instant
System.out.println("Instant: " + instant);
}
}
Calendar
to ZonedDateTime
Conversion:import java.util.Calendar;
import java.time.ZonedDateTime;
import java.time.ZoneId;
public class LegacyCalendarToZonedDateTime {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance(); // Legacy Calendar object
ZonedDateTime zonedDateTime = calendar.toInstant().atZone(ZoneId.systemDefault()); // Convert to ZonedDateTime
System.out.println("ZonedDateTime: " + zonedDateTime);
}
}
java.time
প্যাকেজের Instant
, LocalDateTime
, এবং ZonedDateTime
নতুন APIs আপনাকে আধুনিক এবং সঠিকভাবে তারিখ ও সময় ম্যানিপুলেট করার উপায় প্রদান করে।java.util.Date
, java.util.Calendar
এবং SimpleDateFormat
এর সাথে কম্প্যাটিবিলিটি বজায় রেখে আপনি সেগুলি java.time
APIs এ কনভার্ট করে সহজেই ব্যবহার করতে পারেন।java.time
প্যাকেজের সাহায্যে তারিখ এবং সময় সম্পর্কিত কাজ আরও সঠিক, পরিস্কার এবং কার্যকরী হয়।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.time
প্যাকেজLocalDate
, LocalTime
, ZonedDateTime
, Instant
, DateTimeFormatter
এবং Clock
প্রভৃতি নতুন ক্লাসগুলির মাধ্যমে immutable (অপরিবর্তনযোগ্য) টাইম অবজেক্ট তৈরি করা যায়, যা অনেক বেশি কার্যকরী এবং নির্ভরযোগ্য।java.util.Date
এবং java.util.Calendar
কে নতুন API তে রূপান্তর করার জন্য মেথড: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
এ রূপান্তর করা হয়েছে।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.time
API তে LocalDate
, LocalDateTime
, ZonedDateTime
ইত্যাদি ক্লাস রয়েছে, যা টাইমজোন ম্যানেজমেন্ট এবং সময়ের অপারেশন সহজতর করে।java.util.Date
এবং java.util.Calendar
থেকে Instant
এবং ZonedDateTime
তে রূপান্তর করার মাধ্যমে আপনি নতুন API এর সুবিধাগুলি পুরোপুরি উপভোগ করতে পারেন, যেমন immutable objects, time zone handling ইত্যাদি।এটি Java 8 এর java.time
প্যাকেজের মাধ্যমে টাইম এবং তারিখের কাজের প্রক্রিয়া আরো সহজ এবং নির্ভরযোগ্য করে তোলে।
java.util.Date
এবং java.time.Instant
ক্লাস দুটি Java এর সময় সম্পর্কিত টুলস, কিন্তু এগুলোর মধ্যে কিছু পার্থক্য রয়েছে। java.util.Date
ক্লাসটি পুরানো টাইম API এর অংশ, যা UTC (Coordinated Universal Time) থেকে সেকেন্ডে সময়ের একটি নির্দিষ্ট মুহূর্ত প্রতিনিধিত্ব করে, কিন্তু এটি মানবিক ভ্রান্তি এবং সময়সীমার পার্থক্য হিসাব করার ক্ষেত্রে নির্ভুল নয়। অপরদিকে, java.time.Instant
ক্লাসটি Java 8 এর অংশ, যা java.time
প্যাকেজের আওতায় আসে এবং এটি UTC সময়ের নির্দিষ্ট মুহূর্ত (epoch time) এক সেকেন্ডের নির্ভুলতা সহ প্রতিনিধিত্ব করে।
Java 8 এ java.util.Date
কে Instant
-এ রূপান্তর করা সম্ভব, কারণ Date
ক্লাসের মধ্যে একটি toInstant()
মেথড রয়েছে যা পুরানো টাইম API কে Java Time API-এর সাথে ইন্টিগ্রেট করতে সাহায্য করে।
import java.util.Date;
import java.time.Instant;
public class DateToInstantExample {
public static void main(String[] args) {
// Create a Date object (current time)
Date currentDate = new Date();
System.out.println("Current Date: " + currentDate);
// Convert Date to Instant
Instant instant = currentDate.toInstant();
System.out.println("Converted Instant: " + instant);
}
}
Current Date: Mon Dec 23 15:45:30 IST 2024
Converted Instant: 2024-12-23T10:15:30Z
ব্যাখ্যা:
Date currentDate = new Date();
: এটি বর্তমান তারিখ এবং সময় একটি Date
অবজেক্টে ধারণ করে।toInstant()
মেথডটি java.util.Date
থেকে Instant
এ রূপান্তর করে, যা UTC সময়ের নির্দিষ্ট মুহূর্ত প্রতিনিধিত্ব করে।একটি Date
অবজেক্টের Instant অবজেক্টে রূপান্তর করার পর, আপনি Instant এর ওপর বিভিন্ন কাজ যেমন যোগ-বিয়োগ, পার্থক্য বের করা ইত্যাদি করতে পারেন।
import java.util.Date;
import java.time.Instant;
import java.time.Duration;
public class DateToInstantExample {
public static void main(String[] args) {
// Create a Date object (current time)
Date currentDate = new Date();
System.out.println("Current Date: " + currentDate);
// Convert Date to Instant
Instant instant = currentDate.toInstant();
System.out.println("Converted Instant: " + instant);
// Add 1000 seconds to the Instant
Instant newInstant = instant.plusSeconds(1000);
System.out.println("New Instant (after adding 1000 seconds): " + newInstant);
// Calculate the difference between the current Instant and the new Instant
Duration duration = Duration.between(instant, newInstant);
System.out.println("Difference in seconds: " + duration.getSeconds());
}
}
Current Date: Mon Dec 23 15:45:30 IST 2024
Converted Instant: 2024-12-23T10:15:30Z
New Instant (after adding 1000 seconds): 2024-12-23T10:31:10Z
Difference in seconds: 1000
ব্যাখ্যা:
plusSeconds(1000)
: এখানে Instant
অবজেক্টে 1000 সেকেন্ড যোগ করা হয়েছে, এবং নতুন Instant
পাওয়া গেছে।Duration.between(instant, newInstant)
: আমরা Instant
অবজেক্টের মধ্যে সময়ের পার্থক্য বের করেছি এবং সেকেন্ডে সেটি মাপা হয়েছে।একইভাবে, আপনি Instant
কে java.util.Date
এ রূপান্তর করতে পারেন:
import java.util.Date;
import java.time.Instant;
public class InstantToDateExample {
public static void main(String[] args) {
// Create an Instant object (current UTC time)
Instant instant = Instant.now();
System.out.println("Current Instant: " + instant);
// Convert Instant to Date
Date date = Date.from(instant);
System.out.println("Converted Date: " + date);
}
}
Current Instant: 2024-12-23T10:15:30Z
Converted Date: Mon Dec 23 15:15:30 IST 2024
ব্যাখ্যা:
Date.from(instant)
: এটি Instant
থেকে একটি Date
অবজেক্টে রূপান্তর করে।java.util.Date
থেকে Instant
রূপান্তর করার জন্য toInstant()
মেথড ব্যবহার করা হয়।Instant
হলো UTC (Coordinated Universal Time) সময়ের নির্দিষ্ট মুহূর্ত, যা সেকেন্ড এবং ন্যানোসেকেন্ড নির্ভুল হয়।Instant
কে Date
বা অন্য যেকোনো java.time
ক্লাসে রূপান্তর করা সহজ এবং এর মাধ্যমে আপনি সময় সম্পর্কিত গণনা (যেমন সময় যোগ বা বিয়োগ, পার্থক্য নির্ধারণ) করতে পারেন।Java 8-এ java.time
প্যাকেজটি টাইম API উন্নত করার জন্য প্রবর্তিত হয়েছিল, এবং এটি পুরানো java.util.Date
ক্লাসের তুলনায় আরো নির্ভুল এবং শক্তিশালী।
java.sql.Timestamp
হল JDBC (Java Database Connectivity) এর অংশ, যা ডাটাবেসে তারিখ এবং সময় স্টোর করতে ব্যবহৃত হয়। এটি java.util.Date
এর একটি subclass এবং LocalDateTime
বা ZonedDateTime
এ রূপান্তর করা সম্ভব।
যেহেতু Timestamp
একটি UTC-এ ভিত্তি করে সময় ধারণ করে, তাই আপনি এটি LocalDateTime
বা ZonedDateTime
এ রূপান্তর করতে পারেন।
এখানে Timestamp
থেকে LocalDateTime
বা ZonedDateTime
এ রূপান্তর করার উদাহরণ দেখানো হয়েছে:
Timestamp
থেকে LocalDateTime
এ রূপান্তর:LocalDateTime
ক্লাসটি নির্দিষ্ট তারিখ এবং সময় ধারণ করে, তবে এটি কোনো সময় অঞ্চল সম্পর্কিত তথ্য ধারণ করে না। যদি আপনি একটি Timestamp
অবজেক্টকে LocalDateTime
এ রূপান্তর করতে চান, আপনি toLocalDateTime()
মেথড ব্যবহার করতে পারেন।
Timestamp
থেকে LocalDateTime
এ রূপান্তর:import java.sql.Timestamp;
import java.time.LocalDateTime;
public class TimestampToLocalDateTime {
public static void main(String[] args) {
// Create a Timestamp object (current time)
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
// Convert Timestamp to LocalDateTime
LocalDateTime localDateTime = timestamp.toLocalDateTime();
System.out.println("Timestamp: " + timestamp);
System.out.println("Converted LocalDateTime: " + localDateTime);
}
}
Timestamp: 2024-12-23 14:35:20.123
Converted LocalDateTime: 2024-12-23T14:35:20.123
timestamp.toLocalDateTime()
: এটি Timestamp
অবজেক্টকে LocalDateTime
এ রূপান্তরিত করে, যা তারিখ এবং সময়ের তথ্য ধারণ করে কিন্তু সময় অঞ্চল সম্পর্কিত তথ্য নয়।Timestamp
থেকে ZonedDateTime
এ রূপান্তর:ZonedDateTime
ক্লাসটি LocalDateTime
এর মতো, তবে এটি সময় অঞ্চল (timezone) সম্পর্কিত তথ্য ধারণ করে। Timestamp
থেকে ZonedDateTime
এ রূপান্তর করতে, প্রথমে Timestamp
কে LocalDateTime
এ রূপান্তর করতে হবে এবং তারপর তা ZonedDateTime
এ কনভার্ট করতে হবে।
Timestamp
থেকে ZonedDateTime
এ রূপান্তর:import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class TimestampToZonedDateTime {
public static void main(String[] args) {
// Create a Timestamp object (current time)
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
// Convert Timestamp to LocalDateTime
LocalDateTime localDateTime = timestamp.toLocalDateTime();
// Convert LocalDateTime to ZonedDateTime with a specific time zone
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Kolkata"));
System.out.println("Timestamp: " + timestamp);
System.out.println("Converted ZonedDateTime: " + zonedDateTime);
}
}
Timestamp: 2024-12-23 14:35:20.123
Converted ZonedDateTime: 2024-12-23T14:35:20.123+05:30[Asia/Kolkata]
timestamp.toLocalDateTime()
: এটি Timestamp
অবজেক্টকে LocalDateTime
এ রূপান্তর করে।localDateTime.atZone(ZoneId.of("Asia/Kolkata"))
: এটি LocalDateTime
কে Asia/Kolkata
টাইম জোনের ZonedDateTime
এ রূপান্তরিত করে।Timestamp
থেকে UTC ZonedDateTime
এ রূপান্তর:আপনি যদি UTC (Coordinated Universal Time) সময় অঞ্চলে ZonedDateTime
রূপান্তর করতে চান, তাহলে আপনি ZoneId.of("UTC")
ব্যবহার করতে পারেন।
Timestamp
থেকে UTC ZonedDateTime
এ রূপান্তর:import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class TimestampToUTCZonedDateTime {
public static void main(String[] args) {
// Create a Timestamp object (current time)
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
// Convert Timestamp to LocalDateTime
LocalDateTime localDateTime = timestamp.toLocalDateTime();
// Convert LocalDateTime to ZonedDateTime with UTC time zone
ZonedDateTime zonedDateTimeUTC = localDateTime.atZone(ZoneId.of("UTC"));
System.out.println("Timestamp: " + timestamp);
System.out.println("Converted UTC ZonedDateTime: " + zonedDateTimeUTC);
}
}
Timestamp: 2024-12-23 14:35:20.123
Converted UTC ZonedDateTime: 2024-12-23T09:35:20.123Z[UTC]
ZoneId.of("UTC")
: এটি ZonedDateTime
কে UTC টাইম জোনে রূপান্তর করে, যা Z
দিয়ে সমাপ্ত হয়।Timestamp
থেকে LocalDateTime
এ রূপান্তর করতে toLocalDateTime()
মেথড ব্যবহার করুন।Timestamp
থেকে ZonedDateTime
এ রূপান্তর করতে প্রথমে LocalDateTime
এ রূপান্তর করুন এবং তারপর সময় অঞ্চল (যেমন ZoneId
) নির্ধারণ করুন।ZoneId.of("UTC")
ব্যবহার করে আপনি UTC টাইম জোনে ZonedDateTime
পেতে পারেন।এভাবে আপনি Timestamp
থেকে LocalDateTime
বা ZonedDateTime
এ রূপান্তর করতে পারবেন এবং প্রয়োজন অনুসারে বিভিন্ন সময় অঞ্চল বা UTC সময় ব্যবহার করতে পারবেন।
Java Time API (যেমন java.time
প্যাকেজ) Java 8 এ আনা হয়েছিল এবং এটি সময় এবং তারিখের জন্য আধুনিক, নিরাপদ, এবং শক্তিশালী API প্রদান করে। তবে, Legacy API, যেমন java.util.Date
এবং java.util.Calendar
, এখনও প্রচলিত এবং অনেক অ্যাপ্লিকেশন এবং লাইব্রেরিতে ব্যবহৃত হয়। তাই Java Time API এবং Legacy API এর মধ্যে সঙ্গতিপূর্ণতা নিশ্চিত করার জন্য কিছু সমাধান এবং কৌশল দরকার।
java.time
Java Time API (java.time
প্যাকেজ) নতুন হলেও এটি পুরানো Date
এবং Calendar
ক্লাসের সাথে সম্পূর্ণ সঙ্গতিপূর্ণ নয়। তবে, Java Time API এর মাধ্যমে Legacy API এর সাথে কাজ করার জন্য কয়েকটি কৌশল রয়েছে, যা সহজে Legacy API এর মানকে LocalDate
, LocalDateTime
, ZonedDateTime
বা অন্যান্য java.time
ক্লাসে রূপান্তরিত করে এবং সেগুলিকে পুরানো API এর সাথে মিলিয়ে কাজ করে।
java.time
এর মধ্যে রূপান্তরের কৌশল:java.util.Date
থেকে LocalDateTime
বা ZonedDateTime
এ রূপান্তর: java.util.Date
একটি সময়ের মাপের স্ট্যান্ডার্ড কৌশল, কিন্তু এটি টাইম জোন সম্পর্কিত কোনো তথ্য ধারণ করে না। তবে, আপনি সহজেই java.time
প্যাকেজের ক্লাসে এটিকে রূপান্তর করতে পারেন।Calendar
থেকে LocalDate
বা LocalDateTime
এ রূপান্তর: Calendar
এর একটি getTime()
মেথড রয়েছে যা একটি Date
অবজেক্ট প্রদান করে, তারপর আপনি Date
থেকে java.time
এর অবজেক্টে রূপান্তর করতে পারেন।java.util.Date
থেকে LocalDateTime
এবং ZonedDateTime
এ রূপান্তরimport java.util.*;
import java.time.*;
import java.time.zone.ZoneRulesException;
public class LegacyDateToJavaTime {
public static void main(String[] args) {
// Create a legacy Date object (using java.util.Date)
Date legacyDate = new Date();
System.out.println("Legacy Date: " + legacyDate);
// Convert java.util.Date to java.time.LocalDateTime
LocalDateTime localDateTime = legacyDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("Converted to LocalDateTime: " + localDateTime);
// Convert java.util.Date to java.time.ZonedDateTime
ZonedDateTime zonedDateTime = legacyDate.toInstant().atZone(ZoneId.systemDefault());
System.out.println("Converted to ZonedDateTime: " + zonedDateTime);
}
}
toInstant()
: এটি java.util.Date
অবজেক্টকে Instant এ রূপান্তরিত করে, যা UTC সময়ের মুহূর্ত নির্দেশ করে।atZone(ZoneId.systemDefault())
: এটি Instant থেকে একটি নির্দিষ্ট time zone (এখানে ZoneId.systemDefault()
ব্যবহার করা হয়েছে) সহ ZonedDateTime
বা LocalDateTime
তৈরি করে।Legacy Date: Mon Dec 23 15:30:25 IST 2024
Converted to LocalDateTime: 2024-12-23T15:30:25.152
Converted to ZonedDateTime: 2024-12-23T15:30:25.152+05:30[Asia/Kolkata]
java.util.Calendar
থেকে LocalDateTime
এবং ZonedDateTime
এ রূপান্তরimport java.util.*;
import java.time.*;
public class CalendarToJavaTime {
public static void main(String[] args) {
// Create a legacy Calendar object
Calendar calendar = Calendar.getInstance();
System.out.println("Legacy Calendar: " + calendar.getTime());
// Convert java.util.Calendar to java.time.LocalDateTime
LocalDateTime localDateTimeFromCalendar = calendar.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("Converted to LocalDateTime: " + localDateTimeFromCalendar);
// Convert java.util.Calendar to java.time.ZonedDateTime
ZonedDateTime zonedDateTimeFromCalendar = calendar.toInstant().atZone(ZoneId.systemDefault());
System.out.println("Converted to ZonedDateTime: " + zonedDateTimeFromCalendar);
}
}
toInstant()
: Calendar
থেকে Instant
তৈরি করা হয়েছে, তারপর atZone()
ব্যবহার করে তারিখ এবং সময়ের ZonedDateTime
বা LocalDateTime
তৈরি করা হয়েছে।Legacy Calendar: Mon Dec 23 15:30:25 IST 2024
Converted to LocalDateTime: 2024-12-23T15:30:25.152
Converted to ZonedDateTime: 2024-12-23T15:30:25.152+05:30[Asia/Kolkata]
Date
এবং Calendar
এর পরিবর্তে java.time
ব্যবহার করুন: Java 8 থেকে নতুন java.time
API ব্যবহার করা শ্রেয় কারণ এটি নিরাপদ, সঠিক এবং অনেক সুবিধা প্রদান করে।java.time
API তে রূপান্তর করুন: যখনই সম্ভব, পুরানো Date
বা Calendar
এর মানকে Instant
, ZonedDateTime
বা LocalDateTime
তে রূপান্তর করুন, যাতে টাইম জোন এবং ডেলাইট সেভিংস টাইম এর সুবিধা পেতে পারেন।java.time
ব্যবহার করুন: নতুন API তৈরি করার সময় java.time
প্যাকেজের ক্লাসগুলোই ব্যবহার করুন, এবং পুরানো টাইম API শুধুমাত্র অংশীক রূপে ব্যবহার করুন।java.util.Date
এবং java.util.Calendar
পুরানো API গুলি, তবে Java 8 থেকে শুরু হওয়া java.time
API বেশি কার্যকরী এবং আধুনিক।java.util.Date
এবং java.util.Calendar
থেকে java.time
API (যেমন LocalDateTime
, ZonedDateTime
) এ রূপান্তর করতে পারেন এবং সেই API গুলি ব্যবহার করে আরও নির্ভুল এবং শক্তিশালী কাজ করতে পারেন।java.time
প্যাকেজটি সহজ, সঠিক এবং time-zone সম্পর্কিত সমস্যাগুলির সমাধান প্রদান করে।Read more