Java 8 থেকে java.time প্যাকেজের DateTimeFormatter ক্লাসটি ব্যবহার করে Date এবং Time এর Parsing (অথবা স্ট্রিং থেকে Date/Time অবজেক্টে রূপান্তর) করা সহজ হয়েছে। এটি ISO 8601 ফরম্যাটসহ বিভিন্ন কাস্টম ফরম্যাটে স্ট্রিং থেকে LocalDate, LocalTime, LocalDateTime এবং ZonedDateTime সহ অন্যান্য তারিখ এবং সময়ের অবজেক্ট তৈরি করতে সাহায্য করে।
1. DateTimeFormatter ক্লাস:
DateTimeFormatter ক্লাসটি স্ট্রিং থেকে তারিখ এবং সময়ের অবজেক্ট তৈরি করতে ব্যবহৃত হয়। এটি parse() মেথডের মাধ্যমে স্ট্রিংকে পার্স (রূপান্তর) করে LocalDate, LocalTime, LocalDateTime, ZonedDateTime ইত্যাদি অবজেক্টে রূপান্তর করতে সাহায্য করে।
Date এবং Time Parsing এর উদাহরণ:
1.1 LocalDate এর Parsing:
LocalDate হল যত তারিখের অংশ (দিন, মাস, বছর) ধারণ করে।
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateParsingExample {
public static void main(String[] args) {
// Define a custom date format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// Parse a string into LocalDate
String dateString = "2024-12-23";
LocalDate date = LocalDate.parse(dateString, formatter);
// Print the parsed LocalDate
System.out.println("Parsed Date: " + date);
}
}
আউটপুট:
Parsed Date: 2024-12-23
ব্যাখ্যা:
- এখানে
DateTimeFormatter.ofPattern("yyyy-MM-dd")ব্যবহার করে কাস্টম তারিখ ফরম্যাট তৈরি করা হয়েছে। LocalDate.parse(dateString, formatter)ব্যবহার করে স্ট্রিং "2024-12-23" কেLocalDateঅবজেক্টে রূপান্তরিত করা হয়েছে।
1.2 LocalTime এর Parsing:
LocalTime হল সময় (ঘণ্টা, মিনিট, সেকেন্ড) ধারণ করে, তবে তারিখ সম্পর্কিত কোনো তথ্য থাকে না।
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class TimeParsingExample {
public static void main(String[] args) {
// Define a custom time format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
// Parse a string into LocalTime
String timeString = "14:30:45";
LocalTime time = LocalTime.parse(timeString, formatter);
// Print the parsed LocalTime
System.out.println("Parsed Time: " + time);
}
}
আউটপুট:
Parsed Time: 14:30:45
ব্যাখ্যা:
DateTimeFormatter.ofPattern("HH:mm:ss")ব্যবহার করে কাস্টম সময় ফরম্যাট তৈরি করা হয়েছে।LocalTime.parse(timeString, formatter)স্ট্রিং "14:30:45" কেLocalTimeঅবজেক্টে রূপান্তরিত করেছে।
1.3 LocalDateTime এর Parsing:
LocalDateTime একটি LocalDate এবং LocalTime এর সংমিশ্রণ, যা তারিখ এবং সময় উভয়কেই ধারণ করে।
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateTimeParsingExample {
public static void main(String[] args) {
// Define a custom date and time format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// Parse a string into LocalDateTime
String dateTimeString = "2024-12-23 14:30:45";
LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
// Print the parsed LocalDateTime
System.out.println("Parsed DateTime: " + dateTime);
}
}
আউটপুট:
Parsed DateTime: 2024-12-23T14:30:45
ব্যাখ্যা:
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")কাস্টম তারিখ এবং সময় ফরম্যাট তৈরি করেছে।LocalDateTime.parse(dateTimeString, formatter)স্ট্রিং "2024-12-23 14:30:45" কেLocalDateTimeঅবজেক্টে রূপান্তরিত করেছে।
1.4 ZonedDateTime এর Parsing:
ZonedDateTime হলো একটি LocalDateTime এর মতো, তবে এতে টাইমজোন সম্পর্কিত তথ্য থাকে।
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;
public class ZonedDateTimeParsingExample {
public static void main(String[] args) {
// Define a custom ZonedDateTime format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
// Parse a string into ZonedDateTime
String zonedDateTimeString = "2024-12-23 14:30:45 UTC";
ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedDateTimeString, formatter);
// Print the parsed ZonedDateTime
System.out.println("Parsed ZonedDateTime: " + zonedDateTime);
}
}
আউটপুট:
Parsed ZonedDateTime: 2024-12-23T14:30:45Z
ব্যাখ্যা:
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z")কাস্টম টাইমজোন সহ তারিখ এবং সময় ফরম্যাট তৈরি করেছে।ZonedDateTime.parse(zonedDateTimeString, formatter)স্ট্রিং "2024-12-23 14:30:45 UTC" কেZonedDateTimeঅবজেক্টে রূপান্তরিত করেছে।
2. DateTimeFormatter ক্লাসের গুরুত্বপূর্ণ মেথড:
parse(String text): এটি একটি স্ট্রিং ইনপুট গ্রহণ করে এবং তাDateবাTimeঅবজেক্টে রূপান্তরিত করে।ofPattern(String pattern): এটি একটি নির্দিষ্ট প্যাটার্ন দিয়েDateTimeFormatterতৈরি করে, যাতে আপনি কাস্টম তারিখ/সময় ফরম্যাটের সাথে স্ট্রিং পার্স করতে পারেন।format(TemporalAccessor temporal): এটি একটিTemporalঅবজেক্ট (যেমনLocalDateTime) কে একটি নির্দিষ্ট ফরম্যাটে রূপান্তরিত করে।
3. ISO 8601 ফরম্যাট:
Java 8 java.time প্যাকেজে ISO 8601 তারিখ এবং সময় ফরম্যাট ব্যবহার করা হয়, যা একটি আন্তর্জাতিক স্ট্যান্ডার্ড। Java 8 এ DateTimeFormatter.ISO_LOCAL_DATE, DateTimeFormatter.ISO_LOCAL_TIME, এবং DateTimeFormatter.ISO_LOCAL_DATE_TIME এর মতো স্ট্যাটিক কনস্ট্যান্টস রয়েছে, যা ISO ফরম্যাটে পার্সিং করতে ব্যবহৃত হয়।
4. Parsing with Built-in Formatters:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class BuiltInFormatterExample {
public static void main(String[] args) {
// ISO date parsing
String dateString = "2024-12-23";
LocalDate date = LocalDate.parse(dateString, DateTimeFormatter.ISO_LOCAL_DATE);
// Print the parsed date
System.out.println("Parsed ISO Date: " + date);
}
}
আউটপুট:
Parsed ISO Date: 2024-12-23
ব্যাখ্যা:
DateTimeFormatter.ISO_LOCAL_DATEব্যবহার করে ISO 8601 স্ট্যান্ডার্ডের মধ্যে স্ট্রিং থেকে তারিখ পার্স করা হয়েছে।
DateTimeFormatterক্লাস Java 8 তেjava.timeপ্যাকেজের একটি শক্তিশালী টুল যা Date এবং Time এর পার্সিং এবং ফরম্যাটিং সঠিকভাবে করতে সাহায্য করে।- এটি ISO 8601 স্ট্যান্ডার্ড অনুসরণ করে, এবং কাস্টম প্যাটার্ন তৈরি করার মাধ্যমে আপনার প্রয়োজনীয় ফরম্যাটে Date/Time স্ট্রিং রূপান্তর করতে পারে।
LocalDate,LocalTime,LocalDateTime,ZonedDateTimeইত্যাদি ক্লাসের সাথে এই ফরম্যাটারটি ব্যবহৃত হয়ে থাকে।
Java 8-এ java.time প্যাকেজটি তারিখ এবং সময় সম্পর্কিত আধুনিক API সরবরাহ করেছে, যা LocalDate, LocalTime, এবং ZonedDateTime এর মতো ক্লাসের মাধ্যমে তারিখ, সময় এবং টাইমজোন সম্পর্কিত কার্যকলাপ সহজ করে তোলে। অনেক সময় আমাদের স্ট্রিং ফরম্যাট থেকে LocalDate, LocalTime, বা ZonedDateTime অবজেক্ট তৈরি করতে হয়। এই প্রসেসটি DateTimeFormatter ক্লাস ব্যবহার করে করা সম্ভব।
Date and Time Strings থেকে LocalDate, LocalTime, এবং ZonedDateTime তৈরি করা
LocalDate: শুধুমাত্র তারিখ (year, month, day) ধারণ করে।LocalTime: শুধুমাত্র সময় (hour, minute, second, nanosecond) ধারণ করে।ZonedDateTime: তারিখ, সময় এবং টাইমজোন ধারণ করে।
1. LocalDate থেকে Date String তৈরি করা
LocalDate অবজেক্টে একটি তারিখ স্ট্রিং ফরম্যাট থেকে কনভার্ট করতে DateTimeFormatter ক্লাস ব্যবহার করা হয়। DateTimeFormatter এর সাহায্যে আপনি স্ট্রিং ফরম্যাটকে প্যাটার্ন হিসেবে নির্ধারণ করতে পারেন।
LocalDate String থেকে LocalDate তৈরি করা:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class LocalDateExample {
public static void main(String[] args) {
// Date String in "yyyy-MM-dd" format
String dateString = "2024-12-23";
// Create a DateTimeFormatter with the same pattern
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// Parse the date string into LocalDate
LocalDate date = LocalDate.parse(dateString, formatter);
// Print the LocalDate
System.out.println("LocalDate: " + date);
}
}
আউটপুট:
LocalDate: 2024-12-23
ব্যাখ্যা:
DateTimeFormatter.ofPattern("yyyy-MM-dd")ফরম্যাটে স্ট্রিংটি প্যাটার্ন অনুযায়ী পার্স করা হচ্ছে।LocalDate.parse()মেথড ব্যবহার করে স্ট্রিং থেকে একটিLocalDateঅবজেক্ট তৈরি করা হয়েছে।
2. LocalTime থেকে Time String তৈরি করা
LocalTime শুধুমাত্র সময় সম্পর্কিত তথ্য ধারণ করে। LocalTime স্ট্রিং থেকে সময় তৈরি করার জন্য আমরা DateTimeFormatter ব্যবহার করতে পারি।
LocalTime String থেকে LocalTime তৈরি করা:
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class LocalTimeExample {
public static void main(String[] args) {
// Time String in "HH:mm:ss" format
String timeString = "15:30:45";
// Create a DateTimeFormatter with the same pattern
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
// Parse the time string into LocalTime
LocalTime time = LocalTime.parse(timeString, formatter);
// Print the LocalTime
System.out.println("LocalTime: " + time);
}
}
আউটপুট:
LocalTime: 15:30:45
ব্যাখ্যা:
- এখানে
DateTimeFormatter.ofPattern("HH:mm:ss")প্যাটার্নের মাধ্যমে 24 ঘণ্টার সময়ের ফরম্যাটেLocalTimeতৈরি করা হয়েছে। LocalTime.parse()মেথড ব্যবহার করে স্ট্রিং থেকেLocalTimeঅবজেক্টে রূপান্তর করা হয়েছে।
3. ZonedDateTime থেকে Zoned Date-Time String তৈরি করা
ZonedDateTime একটি তারিখ, সময় এবং টাইমজোন ধারণ করে। আপনি যদি একটি ZonedDateTime স্ট্রিং থেকে ZonedDateTime অবজেক্ট তৈরি করতে চান, তবে DateTimeFormatter এবং টাইমজোনের জন্য ZoneId ব্যবহার করতে হবে।
ZonedDateTime String থেকে ZonedDateTime তৈরি করা:
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;
public class ZonedDateTimeExample {
public static void main(String[] args) {
// Zoned Date-Time String in ISO 8601 format
String zonedDateTimeString = "2024-12-23T15:30:45+05:30[Asia/Kolkata]";
// Create a DateTimeFormatter with the pattern
DateTimeFormatter formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;
// Parse the Zoned Date-Time string into ZonedDateTime
ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedDateTimeString, formatter);
// Print the ZonedDateTime
System.out.println("ZonedDateTime: " + zonedDateTime);
}
}
আউটপুট:
ZonedDateTime: 2024-12-23T15:30:45+05:30[Asia/Kolkata]
ব্যাখ্যা:
- এখানে
DateTimeFormatter.ISO_ZONED_DATE_TIMEব্যবহৃত হয়েছে, যা ISO 8601 ফরম্যাট অনুযায়ী ZonedDateTime স্ট্রিং পার্স করে। ZonedDateTime.parse()মেথড দ্বারা স্ট্রিং থেকেZonedDateTimeঅবজেক্ট তৈরি করা হয়েছে।- স্ট্রিংটির মধ্যে
+05:30হল টাইমজোন, এবং[Asia/Kolkata]হল নির্দিষ্ট অঞ্চলের টাইমজোন।
4. LocalDate, LocalTime, এবং ZonedDateTime এর মধ্যে পার্থক্য:
| Feature | LocalDate | LocalTime | ZonedDateTime |
|---|---|---|---|
| Representation | Only date (year, month, day) | Only time (hour, minute, second, nanosecond) | Date, time, and time zone (e.g., Asia/Kolkata) |
| Time Zone | Does not support time zone | Does not support time zone | Supports time zone (e.g., +05:30 or UTC) |
| Usage | Used for handling dates only | Used for handling times only | Used for handling date, time, and time zones |
| Example | 2024-12-23 | 15:30:45 | 2024-12-23T15:30:45+05:30[Asia/Kolkata] |
LocalDate,LocalTime, এবংZonedDateTimeহলjava.timeপ্যাকেজের অত্যন্ত গুরুত্বপূর্ণ ক্লাস যা বিভিন্ন ধরনের তারিখ এবং সময় পরিচালনা করতে ব্যবহৃত হয়।- আপনি
DateTimeFormatterব্যবহার করে Date and Time Strings থেকে সহজেইLocalDate,LocalTime, এবংZonedDateTimeঅবজেক্ট তৈরি করতে পারেন। LocalDateশুধুমাত্র তারিখ ধারণ করে,LocalTimeশুধুমাত্র সময় ধারণ করে এবংZonedDateTimeসময়, তারিখ এবং টাইমজোন ধারণ করে।
Java 8 এবং পরবর্তী সংস্করণে java.time প্যাকেজের ব্যবহার পদ্ধতি তারিখ এবং সময় সম্পর্কিত বিভিন্ন কাজ সহজ এবং পরিষ্কার করে তোলে।
DateTimeFormatter ক্লাসটি Java 8-এ java.time.format প্যাকেজের অংশ হিসাবে প্রবর্তিত হয়েছে এবং এটি LocalDate, LocalDateTime, ZonedDateTime, এবং অন্যান্য java.time অবজেক্টের স্ট্রিং থেকে অবজেক্টে কনভার্সন এবং স্ট্রিং ফরম্যাটিং করার জন্য ব্যবহৃত হয়। Parsing এর মাধ্যমে আপনি একটি স্ট্রিংকে নির্দিষ্ট তারিখ এবং সময় অবজেক্টে রূপান্তর করতে পারেন।
DateTimeFormatter দিয়ে Parsing:
DateTimeFormatter ক্লাসটির মাধ্যমে স্ট্রিং থেকে LocalDate, LocalDateTime, বা ZonedDateTime টাইপের অবজেক্টে রূপান্তর করতে parse() মেথড ব্যবহার করা হয়।
parse() মেথডটি একটি স্ট্রিং নিয়ে সেটি নির্দিষ্ট DateTimeFormatter এর মাধ্যমে পার্স (parse) করে একটি TemporalAccessor অবজেক্ট রিটার্ন করে, যা পরবর্তীতে নির্দিষ্ট টাইপে কনভার্ট করা যায়।
Common Methods for Parsing:
parse(CharSequence text): এটি একটি স্ট্রিং নিয়েTemporalAccessorরিটার্ন করে।parse(CharSequence text, DateTimeFormatter formatter): এটি নির্দিষ্টDateTimeFormatterদিয়ে স্ট্রিংকে পার্স করে।parse(CharSequence text, TemporalQuery<T> query): এটি স্ট্রিং থেকে নির্দিষ্ট টাইপে পার্স করতে সাহায্য করে।
Example: Parsing Date with DateTimeFormatter
1. Basic Parsing with DateTimeFormatter
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateTimeFormatterParsingExample {
public static void main(String[] args) {
String dateStr = "2024-12-23"; // Date in "yyyy-MM-dd" format
// Create a DateTimeFormatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// Parse the string into LocalDate
LocalDate date = LocalDate.parse(dateStr, formatter);
// Print the parsed date
System.out.println("Parsed Date: " + date);
}
}
Output:
Parsed Date: 2024-12-23
ব্যাখ্যা:
DateTimeFormatter.ofPattern("yyyy-MM-dd")স্ট্রিং ফরম্যাট (যেমনyyyy-MM-dd) এর জন্য একটিDateTimeFormatterতৈরি করে।LocalDate.parse(dateStr, formatter)মেথডটি স্ট্রিং"2024-12-23"কে পার্স করেLocalDateঅবজেক্টে রূপান্তরিত করে।
2. Parsing with Time (LocalDateTime)
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateTimeFormatterParsingWithTime {
public static void main(String[] args) {
String dateTimeStr = "2024-12-23 15:30"; // Date and Time in "yyyy-MM-dd HH:mm" format
// Create a DateTimeFormatter for Date and Time
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
// Parse the string into LocalDateTime
LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, formatter);
// Print the parsed DateTime
System.out.println("Parsed DateTime: " + dateTime);
}
}
Output:
Parsed DateTime: 2024-12-23T15:30
ব্যাখ্যা:
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")স্ট্রিংয়ে তারিখ এবং সময়ের ফরম্যাটের জন্য ফরম্যাটার তৈরি করা হয়েছে।LocalDateTime.parse(dateTimeStr, formatter)স্ট্রিংটি পার্স করে একটিLocalDateTimeঅবজেক্টে রূপান্তরিত হয়।
3. Parsing with TimeZone (ZonedDateTime)
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;
public class DateTimeFormatterParsingWithZone {
public static void main(String[] args) {
String dateTimeStr = "2024-12-23T15:30+05:30[Asia/Kolkata]"; // Date, Time and Zone
// Create a DateTimeFormatter with a timezone
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mmXXX'['VV']'");
// Parse the string into ZonedDateTime
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateTimeStr, formatter);
// Print the parsed ZonedDateTime
System.out.println("Parsed ZonedDateTime: " + zonedDateTime);
}
}
Output:
Parsed ZonedDateTime: 2024-12-23T15:30+05:30[Asia/Kolkata]
ব্যাখ্যা:
- এখানে
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mmXXX'['VV']")ফরম্যাটার দিয়ে ZonedDateTime তৈরি করা হয়েছে, যেখানে টাইমজোনও অন্তর্ভুক্ত রয়েছে। - স্ট্রিং
"2024-12-23T15:30+05:30[Asia/Kolkata]"পার্স করা হয় এবংZonedDateTimeঅবজেক্টে রূপান্তরিত হয়।
4. Parsing with Custom DateTime Format
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class CustomDateTimeParsingExample {
public static void main(String[] args) {
String dateStr = "23-Dec-2024"; // Date in "dd-MMM-yyyy" format
// Create a DateTimeFormatter with a custom format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
// Parse the string into LocalDate
LocalDate date = LocalDate.parse(dateStr, formatter);
// Print the parsed date
System.out.println("Parsed Date: " + date);
}
}
Output:
Parsed Date: 2024-12-23
ব্যাখ্যা:
- এখানে
DateTimeFormatter.ofPattern("dd-MMM-yyyy")ব্যবহার করে কাস্টম ফরম্যাটে তারিখ পার্স করা হয়েছে। যেমন"23-Dec-2024"।
DateTimeFormatter এর আরও কিছু বৈশিষ্ট্য:
withZone(ZoneId zone):- আপনি
DateTimeFormatterএর সাথে একটি নির্দিষ্টZoneId(টাইমজোন) যোগ করতে পারেন, যাতে টাইমস্ট্যাম্প টাইমজোন সংক্রান্ত তথ্য রাখে।
Example:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").withZone(ZoneId.of("UTC"));- আপনি
parse(CharSequence text, TemporalQuery<T> query):- আপনি
TemporalQueryব্যবহার করে একটি কাস্টম প্যার্সিং কৌশল তৈরি করতে পারেন।
- আপনি
format()Method:DateTimeFormatterস্ট্রিং প্যাটার্ন ব্যবহার করে একটিTemporalঅবজেক্টকে ফরম্যাট করতে পারে।- উদাহরণ:
formatter.format(LocalDate.now())
সারাংশ:
DateTimeFormatterহল একটি শক্তিশালী ক্লাস যা স্ট্রিং থেকে তারিখ এবং সময় পার্স করার জন্য ব্যবহৃত হয়।parse()মেথডটি স্ট্রিংকে একটি নির্দিষ্ট তারিখ বা সময় অবজেক্টে রূপান্তর করতে ব্যবহৃত হয়।- DateTimeFormatter ব্যবহার করে আপনি কাস্টম ফরম্যাটে তারিখ এবং সময় পার্স করতে পারেন, এবং টাইমজোন বা অন্যান্য অতিরিক্ত তথ্য অন্তর্ভুক্ত করতে পারেন।
এটি Java 8 থেকে java.time প্যাকেজে অন্তর্ভুক্ত করা হয়েছে এবং সময় ব্যবস্থাপনা কোডে দক্ষতা এবং সঠিকতা আনতে এটি খুবই উপকারী।
Java 8-এ java.time প্যাকেজের অন্তর্গত টাইম API দিয়ে তারিখ এবং সময়ের কাজগুলো আরও সহজ এবং দক্ষ হয়েছে। এই API-এর মধ্যে DateTimeFormatter নামক ক্লাসটি রয়েছে, যা তারিখ এবং সময়ের স্ট্রিং ইনপুটকে নির্দিষ্ট ফরম্যাটে প্যার্স (parse) করতে ব্যবহৃত হয়। তবে, যখন আপনি একটি স্ট্রিং প্যার্স করেন, তখন ভুল ফরম্যাটের কারণে parsing exceptions হতে পারে। এই পোস্টে আমরা parsing exceptions এবং তাদের exception handling সম্পর্কে আলোচনা করব।
DateTimeFormatter: প্যার্সিং করার জন্য ব্যবহারযোগ্য ফরম্যাটার
DateTimeFormatter ক্লাসটি তারিখ এবং সময়ের স্ট্রিংকে পার্স করার জন্য ব্যবহার করা হয়। এটি স্ট্রিংয়ের নির্দিষ্ট ফরম্যাটের সাথে মিলিয়ে একটি LocalDate, LocalTime, LocalDateTime, ZonedDateTime, ইত্যাদি তৈরি করতে সহায়ক।
Common Parsing Exceptions in DateTimeFormatter:
DateTimeParseException: এটি সবচেয়ে সাধারণ parsing exception, যা ঘটে যখন ইনপুট স্ট্রিংটি নির্দিষ্ট ফরম্যাটের সাথে মেলে না।
DateTimeParseException Exception Handling:
DateTimeParseException হল একটি unchecked exception যা DateTimeFormatter এর parse() মেথড ব্যবহারের সময় তখন ঘটে যখন স্ট্রিংটির ফরম্যাট অসঠিক বা অযোগ্য হয়। এই exceptionটি DateTimeFormatter দ্বারা স্ট্রিংকে টাইম অবজেক্টে প্যার্স করার সময় উত্থাপিত হয়।
Example: DateTimeParseException Example
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class DateTimeParseExceptionExample {
public static void main(String[] args) {
String dateStr = "2024-13-45"; // Invalid date (13th month and 45th day)
// Define a formatter for the expected date format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
// Try to parse the date string
LocalDate date = LocalDate.parse(dateStr, formatter);
System.out.println("Parsed date: " + date);
} catch (DateTimeParseException e) {
// Handle parsing exception
System.out.println("Error parsing date: " + e.getMessage());
}
}
}
Output:
Error parsing date: Text '2024-13-45' could not be parsed at index 5
ব্যাখ্যা:
- এখানে
dateStrহিসাবে"2024-13-45"একটি ভুল তারিখ, কারণ মাস 13 এবং দিন 45 বৈধ নয়। ফলে,DateTimeParseExceptionউঠে এবং একটি ত্রুটি বার্তা দেওয়া হয়।
Exception Handling: DateTimeParseException
DateTimeParseException হ্যান্ডলিংয়ের জন্য সাধারণত try-catch ব্লক ব্যবহার করা হয়। যখন স্ট্রিংটি নির্দিষ্ট DateTimeFormatter ফরম্যাটের সাথে মেলে না, তখন এই exceptionটি ফেলে দেওয়া হয়। আপনি এই exceptionটি ধরতে এবং সেই অনুযায়ী ত্রুটি বার্তা বা কাস্টম হ্যান্ডলিং ব্যবস্থা করতে পারেন।
Example: Catching DateTimeParseException for Multiple Formats
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class MultiFormatDateParseExample {
public static void main(String[] args) {
String dateStr = "2024/12/23"; // Invalid format for default formatter
// Define two possible formatters
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy/MM/dd");
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
// Try to parse the date string using the first format
LocalDate date = LocalDate.parse(dateStr, formatter1);
System.out.println("Parsed date: " + date);
} catch (DateTimeParseException e1) {
try {
// If the first format fails, try the second one
LocalDate date = LocalDate.parse(dateStr, formatter2);
System.out.println("Parsed date: " + date);
} catch (DateTimeParseException e2) {
System.out.println("Error parsing date: " + e2.getMessage());
}
}
}
}
Output:
Parsed date: 2024-12-23
ব্যাখ্যা:
- এখানে প্রথমে
"2024/12/23"স্ট্রিংটিformatter1ব্যবহার করে প্যার্স করার চেষ্টা করা হয়েছে। যদি এটি ব্যর্থ হয়, তবে পরবর্তীতেformatter2দিয়ে প্যার্স করার চেষ্টা করা হয়। DateTimeParseExceptionযখন একটি নির্দিষ্ট ফরম্যাটে স্ট্রিং প্যার্স করা যায় না, তখন দ্বিতীয় ফরম্যাটটি ব্যবহার করা হয়।
Using DateTimeFormatter with Custom Error Handling
DateTimeFormatter ক্লাসের parse() মেথডে DateTimeParseException ব্যতিক্রমটি সহজে ধরতে এবং ত্রুটির কারণে কোডের অপ্রত্যাশিত আচরণ আটকানো সম্ভব।
Example: Handling Invalid Date Formats Gracefully
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class DateTimeParseGracefullyExample {
public static void main(String[] args) {
String[] dateStrings = {"2024-12-23", "2024-13-45", "2024-02-30"};
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
for (String dateStr : dateStrings) {
try {
LocalDate date = LocalDate.parse(dateStr, formatter);
System.out.println("Parsed date: " + date);
} catch (DateTimeParseException e) {
System.out.println("Error parsing date '" + dateStr + "': " + e.getMessage());
}
}
}
}
Output:
Parsed date: 2024-12-23
Error parsing date '2024-13-45': Text '2024-13-45' could not be parsed at index 5
Error parsing date '2024-02-30': Text '2024-02-30' could not be parsed at index 8
ব্যাখ্যা:
DateTimeParseExceptionগ্রাস করে একটি ভুল তারিখের জন্য ত্রুটি বার্তা প্রদান করছে, কিন্তু অন্য সঠিক তারিখগুলির জন্য প্যার্সিং সফল হয়েছে।
- Parsing Exceptions:
DateTimeParseExceptionহল একটি সাধারণ exception যা ঘটে যখনDateTimeFormatterদিয়ে স্ট্রিং প্যার্স করার চেষ্টা করা হয় এবং স্ট্রিংটি নির্দিষ্ট ফরম্যাটের সাথে মেলে না। - Exception Handling:
try-catchব্লক ব্যবহার করে এই exception হ্যান্ডল করা যায়, এবং একাধিক ফরম্যাটে স্ট্রিং প্যার্স করার জন্য বিভিন্ন পদ্ধতি প্রয়োগ করা যায়। - Graceful Parsing: ব্যবহারকারী ইনপুট বা ডেটা ভ্যালিডেশন করার সময় আপনি
DateTimeParseExceptionক্যাচ করে সঠিক বার্তা দিয়ে গ্রেসফুল হ্যান্ডলিং করতে পারেন।
এইভাবে DateTimeParseException হ্যান্ডলিংয়ের মাধ্যমে আপনি টাইম এবং তারিখ সম্পর্কিত প্যার্সিং ত্রুটিগুলি আরও কার্যকরভাবে ম্যানেজ করতে পারেন।
Java 8-এ java.time প্যাকেজটি তারিখ এবং সময় সম্পর্কিত আধুনিক API প্রদান করেছে যা DateTimeFormatter ক্লাসের মাধ্যমে তারিখ এবং সময় parsing এবং formatting করতে সহায়তা করে। Parsing হল একটি স্ট্রিং থেকে তারিখ বা সময়ের অবজেক্ট তৈরি করা এবং Formatting হল একটি তারিখ বা সময় অবজেক্টকে স্ট্রিং আকারে রূপান্তর করা।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে তারিখ এবং সময়ের স্ট্রিংকে LocalDate, LocalTime, এবং ZonedDateTime এর মতো টাইম অবজেক্টে parse করা যায়।
1. Date এবং Time Parsing with LocalDate
LocalDate শুধুমাত্র তারিখ (year, month, day) ধারণ করে। আপনি DateTimeFormatter ব্যবহার করে একটি স্ট্রিংকে LocalDate অবজেক্টে পার্স করতে পারেন।
Example: Parsing a Date String into LocalDate
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateParsingExample {
public static void main(String[] args) {
// Date String in "yyyy-MM-dd" format
String dateString = "2024-12-23";
// Create a DateTimeFormatter with the pattern
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// Parse the date string into LocalDate
LocalDate date = LocalDate.parse(dateString, formatter);
// Print the LocalDate
System.out.println("Parsed LocalDate: " + date);
}
}
আউটপুট:
Parsed LocalDate: 2024-12-23
ব্যাখ্যা:
DateTimeFormatter.ofPattern("yyyy-MM-dd")প্যাটার্ন অনুযায়ী তারিখ স্ট্রিং পার্স করা হচ্ছে।LocalDate.parse()মেথড ব্যবহার করে স্ট্রিং থেকে একটিLocalDateঅবজেক্ট তৈরি করা হয়েছে।
2. Time Parsing with LocalTime
LocalTime শুধুমাত্র সময় (hour, minute, second) ধারণ করে। টাইম স্ট্রিং থেকে LocalTime অবজেক্ট তৈরি করতে DateTimeFormatter ব্যবহার করা যায়।
Example: Parsing a Time String into LocalTime
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class TimeParsingExample {
public static void main(String[] args) {
// Time String in "HH:mm:ss" format
String timeString = "15:30:45";
// Create a DateTimeFormatter with the pattern
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
// Parse the time string into LocalTime
LocalTime time = LocalTime.parse(timeString, formatter);
// Print the LocalTime
System.out.println("Parsed LocalTime: " + time);
}
}
আউটপুট:
Parsed LocalTime: 15:30:45
ব্যাখ্যা:
DateTimeFormatter.ofPattern("HH:mm:ss")প্যাটার্নটি ব্যবহার করে"15:30:45"টাইম স্ট্রিং পার্স করা হয়েছে।LocalTime.parse()মেথডটি স্ট্রিং থেকেLocalTimeঅবজেক্টে রূপান্তরিত করেছে।
3. Date and Time Parsing with ZonedDateTime
ZonedDateTime তারিখ, সময় এবং টাইমজোন ধারণ করে। আপনি DateTimeFormatter.ISO_ZONED_DATE_TIME বা নিজস্ব প্যাটার্ন দিয়ে টাইমস্ট্যাম্প স্ট্রিং পার্স করতে পারেন।
Example: Parsing a Date-Time String into ZonedDateTime
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class ZonedDateTimeParsingExample {
public static void main(String[] args) {
// ZonedDateTime String in ISO 8601 format
String zonedDateTimeString = "2024-12-23T15:30:45+05:30[Asia/Kolkata]";
// Parse the string into ZonedDateTime using ISO_ZONED_DATE_TIME formatter
ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedDateTimeString, DateTimeFormatter.ISO_ZONED_DATE_TIME);
// Print the ZonedDateTime
System.out.println("Parsed ZonedDateTime: " + zonedDateTime);
}
}
আউটপুট:
Parsed ZonedDateTime: 2024-12-23T15:30:45+05:30[Asia/Kolkata]
ব্যাখ্যা:
DateTimeFormatter.ISO_ZONED_DATE_TIMEপ্যাটার্ন ব্যবহার করে"2024-12-23T15:30:45+05:30[Asia/Kolkata]"স্ট্রিংটিZonedDateTimeঅবজেক্টে রূপান্তরিত করা হয়েছে।- এখানে টাইমজোন
+05:30এবং অঞ্চল[Asia/Kolkata]উল্লেখ করা হয়েছে।
4. Custom Pattern দিয়ে Date and Time Parsing
আপনি নিজস্ব প্যাটার্ন ব্যবহার করে স্ট্রিং পার্স করতে পারেন। উদাহরণস্বরূপ, DateTimeFormatter.ofPattern() ব্যবহার করে নির্দিষ্ট তারিখ এবং সময়ের ফরম্যাট থেকে LocalDate, LocalTime, বা ZonedDateTime তৈরি করতে পারবেন।
Example: Custom Pattern Parsing
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class CustomPatternParsingExample {
public static void main(String[] args) {
// Custom Date String (dd/MM/yyyy)
String dateString = "23/12/2024";
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate localDate = LocalDate.parse(dateString, dateFormatter);
System.out.println("Parsed LocalDate: " + localDate);
// Custom Time String (hh:mm a)
String timeString = "03:30 PM";
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("hh:mm a");
LocalTime localTime = LocalTime.parse(timeString, timeFormatter);
System.out.println("Parsed LocalTime: " + localTime);
// Custom ZonedDateTime String (dd-MM-yyyy HH:mm:ss z)
String zonedDateTimeString = "23-12-2024 15:30:45 GMT";
DateTimeFormatter zonedDateTimeFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss z");
ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedDateTimeString, zonedDateTimeFormatter);
System.out.println("Parsed ZonedDateTime: " + zonedDateTime);
}
}
আউটপুট:
Parsed LocalDate: 2024-12-23
Parsed LocalTime: 15:30
Parsed ZonedDateTime: 2024-12-23T15:30:45Z
ব্যাখ্যা:
DateTimeFormatter.ofPattern("dd/MM/yyyy")ফরম্যাট অনুযায়ীLocalDate.parse()ব্যবহার করে একটি তারিখ তৈরি করা হয়েছে।DateTimeFormatter.ofPattern("hh:mm a")ফরম্যাটের মাধ্যমেLocalTime.parse()ব্যবহার করে সময় তৈরি করা হয়েছে।DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss z")ফরম্যাটেZonedDateTime.parse()ব্যবহার করে টাইমজোন সহ তারিখ এবং সময় তৈরি করা হয়েছে।
5. Parsing Time Zone Specific Date and Time
ZonedDateTime ক্লাসটি টাইমজোন সহ তারিখ এবং সময়ের তথ্য ধারণ করে। আপনি ZonedDateTime.parse() মেথড ব্যবহার করে টাইমজোন সহ তারিখ এবং সময়ের স্ট্রিং থেকে ZonedDateTime অবজেক্ট তৈরি করতে পারেন।
Example: Parsing Date-Time with Specific Time Zone
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class TimeZoneDateTimeParsingExample {
public static void main(String[] args) {
// ZonedDateTime String in "yyyy-MM-dd'T'HH:mm:ssXXX" format
String zonedDateTimeString = "2024-12-23T15:30:45+05:30";
// Parse the string into ZonedDateTime using a custom pattern
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX");
ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedDateTimeString, formatter);
// Print the ZonedDateTime
System.out.println("Parsed ZonedDateTime: " + zonedDateTime);
}
}
আউটপুট:
Parsed ZonedDateTime: 2024-12-23T15:30:45+05:30
ব্যাখ্যা:
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX")ফরম্যাটে টাইমজোন সহ তারিখ এবং সময় পার্স করা হয়েছে।- এখানে
+05:30টাইমজোন ব্যবহার করা হয়েছে, যাAsia/Kolkataটাইমজোনের সাথে সম্পর্কিত।
- DateTimeFormatter এবং parse() মেথডগুলি ব্যবহার করে আপনি বিভিন্ন ধরনের date, time, এবং datetime স্ট্রিং থেকে
LocalDate,LocalTime, এবংZonedDateTimeতৈরি করতে পারেন। - Custom Patterns ব্যবহার করে আপনি আপনার প্রয়োজন অনুযায়ী বিভিন্ন স্ট্রিং ফরম্যাটে তারিখ এবং সময় পার্স করতে পারেন।
ZonedDateTimeটাইমজোন সহ তারিখ এবং সময় পরিচালনার জন্য গুরুত্বপূর্ণ এবং এটি স্ট্রিং থেকে টাইমজোনসহ তারিখ পার্স করতে সহায়তা করে।
এটি Java 8 এর java.time প্যাকেজের একটি শক্তিশালী ফিচার যা আধুনিক তারিখ এবং সময় ব্যবস্থাপনায় গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more