Temporal Interface Java 8 এর java.time প্যাকেজের একটি গুরুত্বপূর্ণ অংশ এবং এটি java.time API এর ভিতরে বিভিন্ন তারিখ এবং সময় সম্পর্কিত ক্লাসগুলোর জন্য একটি সাধারণ ইন্টারফেস হিসেবে কাজ করে। Temporal ইন্টারফেসটি LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Period, Duration এবং আরও অনেক ক্লাসের জন্য একটি সাধারণ মাপ (contract) প্রদান করে, যা বিভিন্ন সময় এবং তারিখের উপর কাজ করার সময় সহায়ক হয়।
Temporal Interface এর ভূমিকা:
Temporal ইন্টারফেসটি তারিখ এবং সময়ের সাথে সম্পর্কিত ক্লাসগুলোর জন্য একটি সাধারণ ইন্টারফেস হিসেবে কাজ করে। এটি তারিখ এবং সময়ের বিভিন্ন অংশ (যেমন দিন, মাস, বছর, ঘণ্টা, মিনিট, সেকেন্ড) সম্পর্কিত ক্যালকুলেশন করতে সহায়তা করে।
এই ইন্টারফেসের মাধ্যমে আপনি বিভিন্ন ধরনের তারিখ এবং সময়ের মানের মধ্যে পার্থক্য বের করতে, তারিখ এবং সময় যোগ বা বিয়োগ করতে পারবেন, এবং সাধারণ তারিখ-সময়ের উপর অপারেশন করতে পারবেন।
Temporal Interface এর মূল মেথডসমূহ:
isSupported(TemporalField field):- এটি চেক করে যে একটি নির্দিষ্ট
TemporalField(যেমনDAY_OF_MONTH,MONTH,YEARইত্যাদি)Temporalঅবজেক্টে সমর্থিত কিনা।
- এটি চেক করে যে একটি নির্দিষ্ট
plus(long amountToAdd, TemporalUnit unit):- এটি একটি নির্দিষ্ট পরিমাণ সময় বা তারিখ যোগ করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনি দিন, মাস, বা ঘণ্টা যোগ করতে পারেন।
minus(long amountToSubtract, TemporalUnit unit):- এটি একটি নির্দিষ্ট পরিমাণ সময় বা তারিখ বিয়োগ করার জন্য ব্যবহৃত হয়।
query(TemporalQuery<R> query):- এটি একটি কাস্টম কুয়েরি বা হিসাবের মাধ্যমে
Temporalঅবজেক্টের মান বের করতে ব্যবহৃত হয়।
- এটি একটি কাস্টম কুয়েরি বা হিসাবের মাধ্যমে
adjustInto(Temporal temporal):- এটি একটি
Temporalঅবজেক্টে কিছু পরিবর্তন বা সমন্বয় করতে ব্যবহৃত হয় (যেমন, নির্দিষ্ট মাস বা দিন সেট করা)।
- এটি একটি
Temporal Interface এর কিছু সাধারণ ব্যবহার:
LocalDateএবংLocalDateTimeএর মধ্যে কাজ করার জন্যTemporalইন্টারফেস ব্যবহার:Temporalইন্টারফেসের মাধ্যমে আপনিLocalDateএবংLocalDateTimeএর উপর বিভিন্ন অপারেশন করতে পারেন, যেমন তাদের মধ্যে পার্থক্য বের করা, সময় যোগ বা বিয়োগ করা।
উদাহরণ 1: Temporal Interface এর মাধ্যমে তারিখের পার্থক্য বের করা:
import java.time.*;
import java.time.temporal.*;
public class TemporalExample {
public static void main(String[] args) {
// Create two LocalDate objects
LocalDate startDate = LocalDate.of(2024, 1, 1);
LocalDate endDate = LocalDate.of(2024, 12, 31);
// Calculate the period between the two dates
Period period = Period.between(startDate, endDate);
// Print the difference in years, months, and days
System.out.println("Period: " + period.getYears() + " years, " + period.getMonths() + " months, " + period.getDays() + " days");
}
}
আউটপুট:
Period: 0 years, 11 months, 30 days
ব্যাখ্যা:
Period.between(startDate, endDate): এটি দুটিLocalDateঅবজেক্টের মধ্যে পার্থক্য বের করে এবং একটিPeriodঅবজেক্ট প্রদান করে, যা বছরের, মাসের এবং দিনের পার্থক্য নির্ধারণ করে।
উদাহরণ 2: Temporal Interface ব্যবহার করে সময়ের পরিমাণ যোগ বা বিয়োগ করা:
import java.time.*;
import java.time.temporal.*;
public class TemporalAddSubtractExample {
public static void main(String[] args) {
// Create a LocalTime object
LocalTime time = LocalTime.of(10, 30); // 10:30 AM
// Add 5 hours to the time
LocalTime newTime = time.plus(5, ChronoUnit.HOURS);
System.out.println("Time after adding 5 hours: " + newTime);
// Subtract 30 minutes from the time
LocalTime earlierTime = time.minus(30, ChronoUnit.MINUTES);
System.out.println("Time after subtracting 30 minutes: " + earlierTime);
}
}
আউটপুট:
Time after adding 5 hours: 15:30
Time after subtracting 30 minutes: 10:00
ব্যাখ্যা:
plus(5, ChronoUnit.HOURS): এটিLocalTimeঅবজেক্টে ৫ ঘণ্টা যোগ করে।minus(30, ChronoUnit.MINUTES): এটিLocalTimeঅবজেক্ট থেকে ৩০ মিনিট বিয়োগ করে।
উদাহরণ 3: Temporal Interface ব্যবহার করে সময়ের পরিমাণ চেক করা:
import java.time.*;
import java.time.temporal.*;
public class TemporalCheckExample {
public static void main(String[] args) {
// Create a LocalDate object
LocalDate date = LocalDate.of(2024, 12, 23);
// Check if the field is supported
boolean isSupported = date.isSupported(ChronoField.MONTH_OF_YEAR);
System.out.println("Is MONTH_OF_YEAR supported? " + isSupported);
// Check if a specific field is supported
boolean isDayOfWeekSupported = date.isSupported(ChronoField.DAY_OF_WEEK);
System.out.println("Is DAY_OF_WEEK supported? " + isDayOfWeekSupported);
}
}
আউটপুট:
Is MONTH_OF_YEAR supported? true
Is DAY_OF_WEEK supported? true
ব্যাখ্যা:
isSupported(ChronoField.MONTH_OF_YEAR): এটি চেক করে যে,MONTH_OF_YEARফিল্ডটিLocalDateঅবজেক্টে সমর্থিত কিনা।isSupported(ChronoField.DAY_OF_WEEK): এটি চেক করে যে,DAY_OF_WEEKফিল্ডটিLocalDateঅবজেক্টে সমর্থিত কিনা।
Temporal Interface এর অন্যান্য গুরুত্বপূর্ণ ব্যবহার:
ChronoUnitব্যবহার করে সময় এবং তারিখের ক্যালকুলেশন:ChronoUnitহল একটি enum যাTemporalএর উপর বিভিন্ন ইউনিট (যেমন, ঘণ্টা, মিনিট, দিন, মাস, বছর) ভিত্তিক ক্যালকুলেশন পরিচালনা করে।
LocalDateTime now = LocalDateTime.now(); LocalDateTime futureTime = now.plus(10, ChronoUnit.DAYS); // Add 10 daysTemporalAdjusterব্যবহার:- এটি একটি ইন্টারফেস যা তারিখে নির্দিষ্ট পরিবর্তন করতে সহায়তা করে, যেমন:
withDayOfMonth(),firstDayOfMonth(),nextOrSame()ইত্যাদি।
- এটি একটি ইন্টারফেস যা তারিখে নির্দিষ্ট পরিবর্তন করতে সহায়তা করে, যেমন:
Temporal Interface হল Java 8 এর java.time প্যাকেজের একটি গুরুত্বপূর্ণ অংশ যা Date/Time সম্পর্কিত বিভিন্ন অবজেক্টের উপর বিভিন্ন কার্যক্রম চালানোর জন্য ব্যবহৃত হয়। এটি তারিখ এবং সময়ের বিভিন্ন অংশ পরিচালনা, যোগ বা বিয়োগ, এবং সমর্থনযোগ্য ক্ষেত্রগুলির চেক করার জন্য ব্যবহৃত হয়। বিভিন্ন LocalDate, LocalTime, LocalDateTime, ZonedDateTime ইত্যাদি ক্লাসের মাধ্যমে এটি তারিখ এবং সময়ের বিভিন্ন কাজ করার জন্য একটি সাধারণ ইন্টারফেস সরবরাহ করে।
Read more