Calendar ক্লাসটি java.util প্যাকেজের একটি গুরুত্বপূর্ণ ক্লাস, যা সময় এবং তারিখ সম্পর্কিত কার্যাবলী সম্পাদন করতে ব্যবহৃত হয়। Calendar ক্লাসটি abstract হওয়ায়, এর বিভিন্ন বাস্তবায়ন রয়েছে, যেমন GregorianCalendar। এটি পুরনো Date ক্লাসের পরিবর্তে সময় এবং তারিখ সম্পর্কিত কাজ করার জন্য ব্যবহৃত হয় এবং সময় ব্যবস্থাপনায় আরও সুবিধাজনক।
Calendar ক্লাসের বেশ কিছু গুরুত্বপূর্ণ মেথড রয়েছে, যা সময় এবং তারিখের বিভিন্ন তথ্য (যেমন, বছর, মাস, দিন ইত্যাদি) পেতে, সেট করতে এবং পরিবর্তন করতে ব্যবহৃত হয়। এর মধ্যে get(), set(), add(), এবং roll() মেথডগুলো বিশেষভাবে গুরুত্বপূর্ণ।
1. get() মেথড
get() মেথডটি Calendar ক্লাসের জন্য নির্দিষ্ট একটি ক্ষেত্রের মান (যেমন, মাস, দিন, বছর ইত্যাদি) ফেরত দেয়। এটি একাধিক ক্ষেত্রের মান পেতে ব্যবহৃত হয়, যেমন Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH ইত্যাদি।
Syntax:
public int get(int field)
- field: এটি এমন একটি ক্ষেত্র যা আপনি পেতে চান, যেমন
Calendar.MONTH,Calendar.YEAR,Calendar.DAY_OF_MONTH, ইত্যাদি।
উদাহরণ:
import java.util.Calendar;
public class CalendarGetExample {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// Get current year, month, and day
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH); // Month is 0-based (0 = January)
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("Year: " + year);
System.out.println("Month: " + (month + 1)); // Adding 1 to convert to 1-based
System.out.println("Day: " + day);
}
}
Output:
Year: 2024
Month: 12
Day: 23
ব্যাখ্যা:
get()মেথডটি বর্তমান বছরের, মাসের এবং দিনের মান ফিরিয়ে দিয়েছে। এখানে মাস 0-based (অর্থাৎ জানুয়ারি ০, ফেব্রুয়ারি ১, ইত্যাদি) হওয়ায়, 1 যোগ করা হয়েছে।
2. set() মেথড
set() মেথডটি ব্যবহার করে আপনি Calendar এর কোনো নির্দিষ্ট ক্ষেত্রের মান সেট করতে পারেন। এটি field এবং তার মান (যেমন, Calendar.MONTH, Calendar.YEAR, Calendar.DAY_OF_MONTH) গ্রহণ করে।
Syntax:
public void set(int field, int value)
- field: সেট করার জন্য ক্ষেত্র (যেমন
Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTHইত্যাদি)। - value: সেই ক্ষেত্রের জন্য নির্দিষ্ট মান।
উদাহরণ:
import java.util.Calendar;
public class CalendarSetExample {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// Set the year to 2025 and the month to March (2, since months are 0-based)
calendar.set(Calendar.YEAR, 2025);
calendar.set(Calendar.MONTH, 2); // March
calendar.set(Calendar.DAY_OF_MONTH, 15); // 15th day of the month
System.out.println("Updated Date: " + calendar.getTime());
}
}
Output:
Updated Date: Sat Mar 15 14:21:43 IST 2025
ব্যাখ্যা:
set()মেথডটিCalendar.YEAR,Calendar.MONTH, এবংCalendar.DAY_OF_MONTHক্ষেত্রগুলো পরিবর্তন করে 2025 সালের মার্চ মাসের 15 তারিখে সেট করেছে।
3. add() মেথড
add() মেথডটি কোনো নির্দিষ্ট ক্ষেত্রের মানে অবধানযোগ্য পরিবর্তন (increment or decrement) করার জন্য ব্যবহৃত হয়। এটি time fields যেমন year, month, day, hour ইত্যাদির মান যোগ বা বিয়োগ করতে ব্যবহৃত হয়।
Syntax:
public void add(int field, int amount)
- field: এমন একটি ক্ষেত্র যার মান আপনি পরিবর্তন করতে চান (যেমন
Calendar.MONTH,Calendar.YEAR,Calendar.HOURইত্যাদি)। - amount: কতটা পরিবর্তন করতে চান। যদি মান positive হয়, তবে ক্ষেত্রটি বাড়ানো হবে এবং যদি মান negative হয়, তবে ক্ষেত্রটি কমানো হবে।
উদাহরণ:
import java.util.Calendar;
public class CalendarAddExample {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// Add 5 days to the current date
calendar.add(Calendar.DAY_OF_MONTH, 5);
// Subtract 2 months from the current month
calendar.add(Calendar.MONTH, -2);
System.out.println("New Date: " + calendar.getTime());
}
}
Output:
New Date: Mon Oct 23 14:21:43 IST 2023
ব্যাখ্যা:
add()মেথডটি 5 দিন যোগ করেছে এবং তারপর 2 মাস কমিয়ে দিয়েছে, ফলে ফলস্বরূপ তারিখটি 23 অক্টোবর, 2023 হয়েছে।
4. roll() মেথড
roll() মেথডটি time fields এর মান পরিবর্তন করে, তবে এটি overflow বা underflow এর ক্ষেত্রে আগের মান বজায় রাখে। উদাহরণস্বরূপ, আপনি month ক্ষেত্রটি 12 মাসে পরিবর্তন করলে এটি next year-এ চলে যাবে, কিন্তু roll() মেথডে মাস পরিবর্তন করলে, বছরের পরিবর্তন না হয়ে মাস একে বাড়ানো হবে।
Syntax:
public void roll(int field, int amount)
- field: এমন একটি ক্ষেত্র যার মান আপনি পরিবর্তন করতে চান (যেমন
Calendar.MONTH,Calendar.DAY_OF_MONTHইত্যাদি)। - amount: কতটা পরিবর্তন করতে চান।
উদাহরণ:
import java.util.Calendar;
public class CalendarRollExample {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// Add 3 months to the current month, but don't change the year
calendar.roll(Calendar.MONTH, 3);
System.out.println("Date after rolling months: " + calendar.getTime());
}
}
Output:
Date after rolling months: Tue Mar 23 14:21:43 IST 2024
ব্যাখ্যা:
roll()মেথডটি মাসের মান পরিবর্তন করেছে, তবে বছরের মান পরিবর্তন হয়নি। এখানে মার্চ 23, 2024 তারিখে চলে এসেছে।
সামগ্রিক পার্থক্য (Difference between add() and roll()):
| Feature | add() | roll() |
|---|---|---|
| Effect on Larger Units (like year) | Modifies the higher fields (e.g., year). | Does not modify higher fields (like year) in case of overflow. |
| Overflow Behavior | Causes overflow (e.g., 12 months = next year). | Prevents overflow; keeps the value within the field's valid range. |
| Usage | Use when you want to modify fields including overflow. | Use when you want to roll over a field without affecting other fields. |
Calendar ক্লাসের get(), set(), add(), এবং roll() মেথডগুলো date and time manipulation-এর জন্য অত্যন্ত গুরুত্বপূর্ণ।
get()এবংset()মেথডগুলির মাধ্যমে আমরা সময় এবং তারিখের মান পেতে এবং সেট করতে পারি।add()মেথডটি সময়ের বিভিন্ন ক্ষেত্রের মানে পরিবর্তন এনে overflow বা underflow ঘটায়, যখনroll()মেথডটি overflow ছাড়াই মান পরিবর্তন করে।
এই মেথডগুলির সাহায্যে সময় এবং তারিখের সঙ্গে কার্যকরভাবে কাজ করা যায়, যা বিভিন্ন অ্যাপ্লিকেশন বা প্রোগ্রামে সময় সম্পর্কিত হিসাবের জন্য অপরিহার্য।
Read more