java.util.Date এবং java.util.Calendar ক্লাস দুটি Java প্রোগ্রামিং ভাষায় date এবং time সম্পর্কিত কার্যাবলী পরিচালনা করতে ব্যবহৃত হয়। যদিও বর্তমানে java.time প্যাকেজ (Java 8-এর পর) সময় এবং তারিখ সম্পর্কিত আরও উন্নত এবং নির্ভুল API সরবরাহ করে, তবুও Date এবং Calendar এখনও কিছু পুরনো কোডে ব্যবহৃত হয় এবং তাদের গুরুত্বপূর্ণ ভূমিকা রয়েছে।
এখানে Date এবং Calendar ক্লাসের বৈশিষ্ট্য এবং ব্যবহারের বিস্তারিত আলোচনা করা হবে।
1. Date ক্লাস:
java.util.Date ক্লাসটি একটি নির্দিষ্ট তারিখ এবং সময়ের প্রতিনিধিত্ব করে এবং এটি milliseconds হিসেবে বর্তমান সময়ের মান ধারণ করে (January 1, 1970, 00:00:00 GMT থেকে)। যদিও Date ক্লাসটি পরবর্তীতে java.time প্যাকেজের মাধ্যমে উন্নত হয়েছে, এটি এখনও অনেক পুরনো কোডে ব্যবহৃত হয়।
Date ক্লাসের বৈশিষ্ট্য:
Dateক্লাসের অবজেক্টের মাধ্যমে আপনি বর্তমান সময় এবং তারিখ পাবেন।- এটি একটি নির্দিষ্ট সময়কে milliseconds হিসেবে ধারণ করে।
Dateক্লাসেtoString()মেথড ব্যবহার করে আপনি একটি readable String তারিখ পেতে পারেন।Dateক্লাসের মাধ্যমে তারিখের সাথে কিছু গাণিতিক অপারেশন (যেমন যোগ বা বিয়োগ) করা সম্ভব নয়।
উদাহরণ:
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
// Date অবজেক্ট তৈরি করা
Date date = new Date();
// বর্তমান তারিখ এবং সময় প্রিন্ট করা
System.out.println("Current Date and Time: " + date.toString());
}
}
Output:
Current Date and Time: Mon Dec 23 15:45:22 IST 2024
ব্যাখ্যা:
Dateঅবজেক্টের মাধ্যমে বর্তমান তারিখ এবং সময়toString()মেথড ব্যবহার করে প্রদর্শন করা হয়েছে।
2. Calendar ক্লাস:
java.util.Calendar ক্লাসটি Date ক্লাসের উন্নত সংস্করণ হিসেবে পরিচিত এবং এটি তারিখ এবং সময়ের সাথে আরো জটিল অপারেশন করতে সহায়তা করে। Calendar ক্লাসের মাধ্যমে আপনি তারিখের বিভিন্ন উপাদান (যেমন, বছর, মাস, দিন, ঘণ্টা, মিনিট, সেকেন্ড) অ্যাক্সেস করতে এবং তাদের সাথে গণনা করতে পারেন।
Calendar ক্লাসের বৈশিষ্ট্য:
Calendarক্লাস তারিখের সাথে বিভিন্ন অপারেশন (যেমন, একটি নির্দিষ্ট দিনের যোগ বা বিয়োগ) করতে পারে।Calendarক্লাসেরget(),set(),add(), এবংroll()মেথডের মাধ্যমে আপনি বছরের, মাসের, দিনের, ঘণ্টার এবং অন্যান্য উপাদানগুলো অ্যাক্সেস এবং পরিবর্তন করতে পারেন।- এটি
Dateক্লাসের পরিবর্তে তারিখের গণনা ও পরিচালনার জন্য বেশি সুবিধাজনক।
উদাহরণ:
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
// Calendar অবজেক্ট তৈরি করা
Calendar calendar = Calendar.getInstance();
// বর্তমান বছরের মান প্রিন্ট করা
int year = calendar.get(Calendar.YEAR);
System.out.println("Current Year: " + year);
// বর্তমান মাসের মান প্রিন্ট করা (মাসের সংখ্যা 0 থেকে শুরু হয়, January = 0)
int month = calendar.get(Calendar.MONTH) + 1; // January will be 1
System.out.println("Current Month: " + month);
// বর্তমান দিনের মান প্রিন্ট করা
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("Current Day of the Month: " + dayOfMonth);
// 10 দিন যোগ করা
calendar.add(Calendar.DAY_OF_MONTH, 10);
System.out.println("Date after 10 days: " + calendar.getTime());
}
}
Output:
Current Year: 2024
Current Month: 12
Current Day of the Month: 23
Date after 10 days: Sun Jan 02 15:45:22 IST 2025
ব্যাখ্যা:
Calendar.getInstance()মেথডের মাধ্যমে একটিCalendarঅবজেক্ট তৈরি করা হয়েছে।get(Calendar.YEAR),get(Calendar.MONTH), এবংget(Calendar.DAY_OF_MONTH)মেথডগুলোর মাধ্যমে বছর, মাস এবং দিনের মান পাওয়ার জন্য ব্যবহৃত হয়েছে।add(Calendar.DAY_OF_MONTH, 10)মেথডের মাধ্যমে বর্তমান তারিখের ১০ দিন যোগ করা হয়েছে।
Date এবং Calendar ক্লাসের মধ্যে পার্থক্য:
| Feature | Date | Calendar |
|---|---|---|
| Purpose | Represents a specific point in time in milliseconds from January 1, 1970 | Provides more flexible date and time manipulation (e.g., adding days, months) |
| Methods | Limited methods for manipulation (e.g., toString(), getTime()) | Offers a rich set of methods (add(), roll(), get(), set()) |
| Time Zone | Time zone is not directly handled. | Can handle time zone and supports TimeZone class. |
| Support for Date Manipulation | Does not support much date manipulation. | Supports complex date operations like adding/subtracting months, days, etc. |
| Null Handling | Can be null, and it can lead to NullPointerException if not initialized properly | Calendar instances cannot be null if properly instantiated |
java.time API - পরবর্তী প্রজন্ম:
Java 8 এর পর java.time প্যাকেজটি Date এবং Calendar ক্লাসগুলির উন্নত সংস্করণ হিসাবে এসেছে। java.time প্যাকেজটি আরও নির্ভুল, পাঠযোগ্য এবং মাল্টিথ্রেডিং পরিবেশে নিরাপদ। LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Duration, এবং Period সহ আরও অনেক নতুন ক্লাস Date এবং Calendar এর পুরনো কোডের চেয়ে অনেক বেশি সুবিধা প্রদান করে।
DateএবংCalendarক্লাসগুলি পুরানো সময় এবং তারিখ ব্যবস্থাপনার জন্য ব্যবহৃত হয়, তবে এগুলির সীমাবদ্ধতা রয়েছে।Calendarক্লাসDateক্লাসের তুলনায় বেশি ক্ষমতাশালী এবং এটি তারিখ এবং সময়ের সাথে জটিল গাণিতিক কার্যাবলী করতে সক্ষম।- Java 8 এর পর
java.timeপ্যাকেজটি উন্নত এবং নির্ভুল তারিখ এবং সময় ব্যবস্থাপনা সরবরাহ করে, যাDateএবংCalendarএর বিকল্প হিসেবে ব্যবহার করা হয়।
java.util.Date এবং java.util.Calendar আজও অনেক পুরনো কোডে ব্যবহৃত হয়, তবে সেগুলির বিকল্প হিসেবে java.time প্যাকেজটি এখন আধুনিক Java অ্যাপ্লিকেশনের জন্য আরও উপযুক্ত।
Read more