Temporal এবং ChronoUnits

জাভা টাইম প্যাকেজ (Java.time Package) - Java Technologies

285

java.time প্যাকেজ হল Java 8 থেকে শুরু হওয়া Date and Time API এর একটি অংশ যা তারিখ, সময় এবং তাদের পার্থক্য নির্ধারণের জন্য বিভিন্ন ক্লাস সরবরাহ করে। এর মধ্যে দুটি গুরুত্বপূর্ণ ধারণা হলো Temporal এবং ChronoUnit

1. Temporal Interface:

Temporal একটি interface যা java.time প্যাকেজের অনেক ক্লাস (যেমন LocalDate, LocalTime, ZonedDateTime, ইত্যাদি) দ্বারা বাস্তবায়িত। এটি তারিখ এবং সময় সম্পর্কিত সাধারণ অপারেশনগুলোর জন্য একটি এবস্ট্র্যাক্ট লেয়ারের কাজ করে এবং বিভিন্ন টাইম ইউনিটের সাথে কাজ করার জন্য সাহায্য করে।

Temporal ইন্টারফেসের কিছু গুরুত্বপূর্ণ মেথড:

  • plus(long amountToAdd, TemporalUnit unit): নির্দিষ্ট পরিমাণ যোগ করা হয়।
  • minus(long amountToSubtract, TemporalUnit unit): নির্দিষ্ট পরিমাণ বিয়োগ করা হয়।
  • isBefore(Temporal other): বর্তমান সময়টি অন্য সময়ের আগে কি না তা যাচাই করে।
  • isAfter(Temporal other): বর্তমান সময়টি অন্য সময়ের পরে কি না তা যাচাই করে।
  • until(Temporal endExclusive, TemporalUnit unit): দুটি Temporal অবজেক্টের মধ্যে পার্থক্য গণনা করে।

Temporal Interface উদাহরণ:

import java.time.LocalDate;
import java.time.temporal.Temporal;

public class TemporalExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate futureDate = today.plusDays(10);  // Add 10 days
        
        System.out.println("Today's Date: " + today);
        System.out.println("Date after 10 days: " + futureDate);
        
        // Checking if today's date is before or after a given date
        if (today.isBefore(futureDate)) {
            System.out.println("Today's date is before the future date.");
        }
        
        // Calculate difference between two dates
        long daysBetween = today.until(futureDate, java.time.temporal.ChronoUnit.DAYS);
        System.out.println("Days between today and future date: " + daysBetween);
    }
}

আউটপুট:

Today's Date: 2024-12-23
Date after 10 days: 2025-01-02
Today's date is before the future date.
Days between today and future date: 10

2. ChronoUnit Enum:

ChronoUnit একটি enum যা temporal units এর সাথে কাজ করার জন্য ব্যবহৃত হয়। এটি TemporalUnit ইন্টারফেসকে বাস্তবায়িত করে এবং বিভিন্ন টাইম ইউনিটের জন্য কনস্ট্যান্টস সরবরাহ করে, যেমন DAYS, MONTHS, YEARS, HOURS, MINUTES, SECONDS, ইত্যাদি।

ChronoUnit ক্লাসটি তারিখ এবং সময়ের পার্থক্য (Duration) এবং তারিখের সাথে যোগ-বিয়োগ (Addition/Subtraction) করার জন্য গুরুত্বপূর্ণ মেথড সরবরাহ করে।

ChronoUnit Enum উদাহরণ:

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class ChronoUnitExample {
    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2024, 1, 1);
        LocalDate endDate = LocalDate.of(2024, 12, 31);

        // Calculate the number of days between two dates
        long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
        System.out.println("Days between: " + daysBetween);  // 365

        // Add days to a specific date
        LocalDate newDate = startDate.plus(10, ChronoUnit.DAYS);
        System.out.println("New Date after adding 10 days: " + newDate);  // 2024-01-11

        // Subtract days from a specific date
        LocalDate earlierDate = endDate.minus(5, ChronoUnit.DAYS);
        System.out.println("New Date after subtracting 5 days: " + earlierDate);  // 2024-12-26
    }
}

ব্যাখ্যা:

  • ChronoUnit.DAYS.between(startDate, endDate): দুটি তারিখের মধ্যে দিনগুলোর পার্থক্য নির্ধারণ করা।
  • startDate.plus(10, ChronoUnit.DAYS): ১০ দিন যোগ করা হয়েছে।
  • endDate.minus(5, ChronoUnit.DAYS): ৫ দিন বিয়োগ করা হয়েছে।

আউটপুট:

Days between: 365
New Date after adding 10 days: 2024-01-11
New Date after subtracting 5 days: 2024-12-26

ChronoUnit এর অন্যান্য গুরুত্বপূর্ণ মেথড:

  1. ChronoUnit.DAYS: দিনের পরিমাণ নির্ধারণ করা।
  2. ChronoUnit.MONTHS: মাসের পরিমাণ নির্ধারণ করা।
  3. ChronoUnit.YEARS: বছরের পরিমাণ নির্ধারণ করা।
  4. ChronoUnit.HOURS: ঘণ্টার পরিমাণ নির্ধারণ করা।
  5. ChronoUnit.MINUTES: মিনিটের পরিমাণ নির্ধারণ করা।
  6. ChronoUnit.SECONDS: সেকেন্ডের পরিমাণ নির্ধারণ করা।

সারাংশ:

  • Temporal ইন্টারফেসটি তারিখ এবং সময় সম্পর্কিত বেশ কিছু সাধারণ অপারেশন (যেমন যোগ-বিয়োগ, পরিসীমা হিসাব করা, আগে বা পরে চেক করা) সহজে সম্পাদন করতে সাহায্য করে।
  • ChronoUnit একটি enum যা টাইম ইউনিট (যেমন দিন, মাস, বছর, ঘণ্টা) পরিচালনা করতে ব্যবহৃত হয়, এবং এটি TemporalUnit ইন্টারফেসকে বাস্তবায়িত করে।
  • ChronoUnit এর সাহায্যে আপনি তারিখ ও সময়ের পরিমাণ গণনা, যোগ-বিয়োগ করতে পারেন এবং এগুলিকে খুবই কার্যকরীভাবে ম্যানিপুলেট করতে পারবেন।
Content added By

Temporal Interface Java 8 এর java.time প্যাকেজের একটি গুরুত্বপূর্ণ অংশ এবং এটি java.time API এর ভিতরে বিভিন্ন তারিখ এবং সময় সম্পর্কিত ক্লাসগুলোর জন্য একটি সাধারণ ইন্টারফেস হিসেবে কাজ করে। Temporal ইন্টারফেসটি LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Period, Duration এবং আরও অনেক ক্লাসের জন্য একটি সাধারণ মাপ (contract) প্রদান করে, যা বিভিন্ন সময় এবং তারিখের উপর কাজ করার সময় সহায়ক হয়।

Temporal Interface এর ভূমিকা:

Temporal ইন্টারফেসটি তারিখ এবং সময়ের সাথে সম্পর্কিত ক্লাসগুলোর জন্য একটি সাধারণ ইন্টারফেস হিসেবে কাজ করে। এটি তারিখ এবং সময়ের বিভিন্ন অংশ (যেমন দিন, মাস, বছর, ঘণ্টা, মিনিট, সেকেন্ড) সম্পর্কিত ক্যালকুলেশন করতে সহায়তা করে।

এই ইন্টারফেসের মাধ্যমে আপনি বিভিন্ন ধরনের তারিখ এবং সময়ের মানের মধ্যে পার্থক্য বের করতে, তারিখ এবং সময় যোগ বা বিয়োগ করতে পারবেন, এবং সাধারণ তারিখ-সময়ের উপর অপারেশন করতে পারবেন।

Temporal Interface এর মূল মেথডসমূহ:

  1. isSupported(TemporalField field):
    • এটি চেক করে যে একটি নির্দিষ্ট TemporalField (যেমন DAY_OF_MONTH, MONTH, YEAR ইত্যাদি) Temporal অবজেক্টে সমর্থিত কিনা।
  2. plus(long amountToAdd, TemporalUnit unit):
    • এটি একটি নির্দিষ্ট পরিমাণ সময় বা তারিখ যোগ করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনি দিন, মাস, বা ঘণ্টা যোগ করতে পারেন।
  3. minus(long amountToSubtract, TemporalUnit unit):
    • এটি একটি নির্দিষ্ট পরিমাণ সময় বা তারিখ বিয়োগ করার জন্য ব্যবহৃত হয়।
  4. query(TemporalQuery<R> query):
    • এটি একটি কাস্টম কুয়েরি বা হিসাবের মাধ্যমে Temporal অবজেক্টের মান বের করতে ব্যবহৃত হয়।
  5. adjustInto(Temporal temporal):
    • এটি একটি Temporal অবজেক্টে কিছু পরিবর্তন বা সমন্বয় করতে ব্যবহৃত হয় (যেমন, নির্দিষ্ট মাস বা দিন সেট করা)।

Temporal Interface এর কিছু সাধারণ ব্যবহার:

  1. 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 এর অন্যান্য গুরুত্বপূর্ণ ব্যবহার:

  1. ChronoUnit ব্যবহার করে সময় এবং তারিখের ক্যালকুলেশন:

    • ChronoUnit হল একটি enum যা Temporal এর উপর বিভিন্ন ইউনিট (যেমন, ঘণ্টা, মিনিট, দিন, মাস, বছর) ভিত্তিক ক্যালকুলেশন পরিচালনা করে।
    LocalDateTime now = LocalDateTime.now();
    LocalDateTime futureTime = now.plus(10, ChronoUnit.DAYS);  // Add 10 days
    
  2. TemporalAdjuster ব্যবহার:
    • এটি একটি ইন্টারফেস যা তারিখে নির্দিষ্ট পরিবর্তন করতে সহায়তা করে, যেমন: withDayOfMonth(), firstDayOfMonth(), nextOrSame() ইত্যাদি।

Temporal Interface হল Java 8 এর java.time প্যাকেজের একটি গুরুত্বপূর্ণ অংশ যা Date/Time সম্পর্কিত বিভিন্ন অবজেক্টের উপর বিভিন্ন কার্যক্রম চালানোর জন্য ব্যবহৃত হয়। এটি তারিখ এবং সময়ের বিভিন্ন অংশ পরিচালনা, যোগ বা বিয়োগ, এবং সমর্থনযোগ্য ক্ষেত্রগুলির চেক করার জন্য ব্যবহৃত হয়। বিভিন্ন LocalDate, LocalTime, LocalDateTime, ZonedDateTime ইত্যাদি ক্লাসের মাধ্যমে এটি তারিখ এবং সময়ের বিভিন্ন কাজ করার জন্য একটি সাধারণ ইন্টারফেস সরবরাহ করে।

Content added By

ChronoUnit ক্লাসটি java.time.temporal প্যাকেজে অন্তর্ভুক্ত এবং এটি তারিখ এবং সময়ের পরিমাপ করতে ব্যবহৃত হয়। এটি Temporal ইন্টারফেসের সাথে কাজ করে এবং আপনি এই ক্লাসটি দিয়ে দিন, মাস, বছর বা অন্যান্য সময়ের ইউনিটে তারিখ এবং সময়ের পার্থক্য বের করতে পারেন।

ChronoUnit ক্লাসটি TemporalUnit ইন্টারফেসকে ইমপ্লিমেন্ট করে এবং এটি কিছু নির্দিষ্ট সময়ের পরিমাপের জন্য বিভিন্ন constants প্রদান করে, যেমন DAYS, MONTHS, YEARS, HOURS, MINUTES, SECONDS ইত্যাদি।

ChronoUnit এর ভূমিকা:

  1. দিন, মাস, বছর পরিমাপ: ChronoUnit.DAYS, ChronoUnit.MONTHS, ChronoUnit.YEARS ব্যবহার করে আপনি দুটি তারিখের মধ্যে দিন, মাস, বা বছর গুনতি করতে পারবেন।
  2. Date/Time Between Calculation: ChronoUnit ব্যবহার করে আপনি Temporal অবজেক্টের মধ্যে সময়ের পরিমাপ করতে পারবেন, যেমন দুটি তারিখ বা সময়ের মধ্যে পার্থক্য বের করা।
  3. Time Adjustment: ChronoUnit ব্যবহার করে নির্দিষ্ট দিন, মাস, বছর যোগ বা বিয়োগ করা যেতে পারে।

ChronoUnit ব্যবহার করার উদাহরণ:

1. দিন, মাস, এবং বছর পরিমাপ করা (DAYS, MONTHS, YEARS)

ধরা যাক, আমাদের দুটি LocalDate অবজেক্ট আছে এবং আমরা তাদের মধ্যে দিন, মাস, এবং বছর এর পার্থক্য বের করতে চাই।

import java.time.*;
import java.time.temporal.*;

public class ChronoUnitExample {
    public static void main(String[] args) {
        // Create two LocalDate objects
        LocalDate startDate = LocalDate.of(2024, 1, 1);  // 1st January 2024
        LocalDate endDate = LocalDate.of(2025, 12, 31); // 31st December 2025

        // Calculate the difference in days, months, and years
        long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
        long monthsBetween = ChronoUnit.MONTHS.between(startDate, endDate);
        long yearsBetween = ChronoUnit.YEARS.between(startDate, endDate);
        
        // Print the results
        System.out.println("Days between: " + daysBetween);
        System.out.println("Months between: " + monthsBetween);
        System.out.println("Years between: " + yearsBetween);
    }
}

আউটপুট:

Days between: 730
Months between: 24
Years between: 2

ব্যাখ্যা:

  • ChronoUnit.DAYS.between(startDate, endDate): এটি দুটি LocalDate এর মধ্যে দিনগুলোর পার্থক্য বের করে।
  • ChronoUnit.MONTHS.between(startDate, endDate): এটি দুটি তারিখের মধ্যে মাসের পার্থক্য বের করে।
  • ChronoUnit.YEARS.between(startDate, endDate): এটি দুটি তারিখের মধ্যে বছরগুলোর পার্থক্য বের করে।

2. সময় যোগ এবং বিয়োগ (Time Adjustment)

ChronoUnit ব্যবহার করে আপনি দিন, মাস, বছর যোগ বা বিয়োগ করতে পারেন।

import java.time.*;
import java.time.temporal.*;

public class ChronoUnitAdjustmentExample {
    public static void main(String[] args) {
        // Create a LocalDate object
        LocalDate startDate = LocalDate.of(2024, 1, 1);  // 1st January 2024

        // Add 5 days to the start date
        LocalDate newDateAfterAddingDays = startDate.plus(5, ChronoUnit.DAYS);
        System.out.println("New Date after adding 5 days: " + newDateAfterAddingDays);

        // Subtract 3 months from the start date
        LocalDate newDateAfterSubtractingMonths = startDate.minus(3, ChronoUnit.MONTHS);
        System.out.println("New Date after subtracting 3 months: " + newDateAfterSubtractingMonths);

        // Add 2 years to the start date
        LocalDate newDateAfterAddingYears = startDate.plus(2, ChronoUnit.YEARS);
        System.out.println("New Date after adding 2 years: " + newDateAfterAddingYears);
    }
}

আউটপুট:

New Date after adding 5 days: 2024-01-06
New Date after subtracting 3 months: 2023-10-01
New Date after adding 2 years: 2026-01-01

ব্যাখ্যা:

  • startDate.plus(5, ChronoUnit.DAYS): এটি startDate থেকে ৫ দিন যোগ করবে এবং নতুন তারিখ প্রদান করবে।
  • startDate.minus(3, ChronoUnit.MONTHS): এটি startDate থেকে ৩ মাস বিয়োগ করবে এবং নতুন তারিখ প্রদান করবে।
  • startDate.plus(2, ChronoUnit.YEARS): এটি startDate থেকে ২ বছর যোগ করবে এবং নতুন তারিখ প্রদান করবে।

3. সময় পরিমাপ করা (Hours, Minutes, Seconds)

ChronoUnit ব্যবহার করে আপনি ঘণ্টা, মিনিট এবং সেকেন্ড এর পার্থক্যও বের করতে পারেন।

import java.time.*;
import java.time.temporal.*;

public class TimeDifferenceExample {
    public static void main(String[] args) {
        // Create two LocalTime objects
        LocalTime startTime = LocalTime.of(8, 30);  // 08:30 AM
        LocalTime endTime = LocalTime.of(14, 45);   // 02:45 PM
        
        // Calculate the difference in hours, minutes, and seconds
        long hoursBetween = ChronoUnit.HOURS.between(startTime, endTime);
        long minutesBetween = ChronoUnit.MINUTES.between(startTime, endTime);
        long secondsBetween = ChronoUnit.SECONDS.between(startTime, endTime);
        
        // Print the results
        System.out.println("Hours between: " + hoursBetween);
        System.out.println("Minutes between: " + minutesBetween);
        System.out.println("Seconds between: " + secondsBetween);
    }
}

আউটপুট:

Hours between: 6
Minutes between: 375
Seconds between: 22500

ব্যাখ্যা:

  • ChronoUnit.HOURS.between(startTime, endTime): এটি LocalTime অবজেক্টের মধ্যে ঘণ্টার পার্থক্য বের করে।
  • ChronoUnit.MINUTES.between(startTime, endTime): এটি মিনিটের পার্থক্য বের করে।
  • ChronoUnit.SECONDS.between(startTime, endTime): এটি সেকেন্ডের পার্থক্য বের করে।

ChronoUnit ক্লাসটি java.time.temporal প্যাকেজে একটি অত্যন্ত কার্যকরী ক্লাস যা আপনাকে তারিখ এবং সময়ের ইউনিটে পার্থক্য বের করতে এবং সময়ের সাথে কাজ করতে সাহায্য করে। এটি DAYS, MONTHS, YEARS, HOURS, MINUTES, SECONDS ইত্যাদি টাইম ইউনিটের মাধ্যমে পার্থক্য নির্ণয় এবং সময় যোগ/বিয়োগ করতে ব্যবহৃত হয়।

  • ChronoUnit.DAYS: দুটি তারিখের মধ্যে দিন পার্থক্য বের করে।
  • ChronoUnit.MONTHS: দুটি তারিখের মধ্যে মাস পার্থক্য বের করে।
  • ChronoUnit.YEARS: দুটি তারিখের মধ্যে বছর পার্থক্য বের করে।
  • ChronoUnit.HOURS, ChronoUnit.MINUTES, ChronoUnit.SECONDS: সময়ের ইউনিটগুলির মধ্যে পার্থক্য বের করতে ব্যবহার করা হয়।

এটি তারিখ এবং সময় সম্পর্কিত বিভিন্ন কাজ খুব সহজে করার জন্য একটি শক্তিশালী এবং কার্যকরী টুল।

Content added By

Java 8 এবং পরবর্তী সংস্করণের java.time প্যাকেজটি তারিখ ও সময় সম্পর্কিত কার্যক্রম পরিচালনার জন্য অত্যন্ত শক্তিশালী এবং সুবিধাজনক ক্লাস সরবরাহ করে। এর মধ্যে দুটি গুরুত্বপূর্ণ উপাদান হল Temporal এবং ChronoUnit

  • Temporal হল একটি ইন্টারফেস, যা সমস্ত তারিখ এবং সময় সম্পর্কিত ক্লাসগুলোর জন্য একটি সাধারণ টাইপ। এটি তারিখ, সময় বা তারিখ-সময় ম্যানিপুলেশন করার জন্য একটি সাধারণ চুক্তি সরবরাহ করে।
  • ChronoUnit হল একটি enum যা জেনেরিক সময় একক (যেমন সেকেন্ড, মিনিট, দিন, মাস, বছর) নির্ধারণ করে এবং এটি Temporal অবজেক্টের সাথে কাজ করার জন্য সহায়ক মেথড প্রদান করে।

1. Temporal Interface

Temporal ইন্টারফেসটি LocalDate, LocalTime, LocalDateTime, ZonedDateTime ইত্যাদি ক্লাসগুলির মধ্যে সাধারণ কন্ট্রাক্ট হিসেবে কাজ করে। এটি তারিখ এবং সময়ের বিভিন্ন অংশে পরিবর্তন করার জন্য plus(), minus(), until(), এবং isBefore(), isAfter() এর মতো মেথড প্রদান করে।

Temporal Interface এর উদাহরণ:

import java.time.LocalDate;
import java.time.temporal.Temporal;
import java.time.temporal.ChronoUnit;

public class TemporalExample {
    public static void main(String[] args) {
        // Create a LocalDate instance
        LocalDate today = LocalDate.now();
        
        // Use Temporal interface methods: plus and minus
        Temporal nextWeek = today.plus(1, ChronoUnit.WEEKS);  // Adding one week
        Temporal previousMonth = today.minus(1, ChronoUnit.MONTHS);  // Subtracting one month
        
        // Print results
        System.out.println("Today's Date: " + today);
        System.out.println("Next Week: " + nextWeek);
        System.out.println("One Month Ago: " + previousMonth);
        
        // Calculate the difference between two dates
        long daysBetween = today.until(nextWeek, ChronoUnit.DAYS);
        System.out.println("Days between today and next week: " + daysBetween);
    }
}

আউটপুট:

Today's Date: 2024-12-23
Next Week: 2024-12-30
One Month Ago: 2024-11-23
Days between today and next week: 7

ব্যাখ্যা:

  • plus(1, ChronoUnit.WEEKS) এবং minus(1, ChronoUnit.MONTHS) মেথডগুলি Temporal ইন্টারফেসের মাধ্যমে তারিখের সাথে একক সময় (যেমন, এক সপ্তাহ বা এক মাস) যোগ বা বিয়োগ করে।
  • until() মেথডটি দুইটি তারিখের মধ্যে পার্থক্য বের করতে ব্যবহৃত হয়, এখানে এটি ChronoUnit.DAYS ব্যবহার করে দুটি তারিখের মধ্যে দিন হিসেবে পার্থক্য বের করেছে।

2. ChronoUnit Enum

ChronoUnit হল একটি enum যা সময়ের বিভিন্ন একক (যেমন সেকেন্ড, মিনিট, ঘণ্টা, দিন, মাস, বছর ইত্যাদি) নির্ধারণ করে। এটি Temporal অবজেক্টের উপর পরিচালনা করতে সাহায্য করে। ChronoUnit এর মেথডগুলির মধ্যে সবচেয়ে বেশি ব্যবহৃত হল DAYS, HOURS, MINUTES, SECONDS, MONTHS, এবং YEARS

ChronoUnit ব্যবহার করে সময়ের পার্থক্য বের করা

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class ChronoUnitExample {
    public static void main(String[] args) {
        // Create two LocalDate instances
        LocalDate startDate = LocalDate.of(2024, 1, 1);
        LocalDate endDate = LocalDate.of(2024, 12, 23);

        // Calculate the number of days between two dates
        long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
        System.out.println("Days between " + startDate + " and " + endDate + ": " + daysBetween);

        // Calculate the number of months between two dates
        long monthsBetween = ChronoUnit.MONTHS.between(startDate, endDate);
        System.out.println("Months between " + startDate + " and " + endDate + ": " + monthsBetween);
        
        // Calculate the number of years between two dates
        long yearsBetween = ChronoUnit.YEARS.between(startDate, endDate);
        System.out.println("Years between " + startDate + " and " + endDate + ": " + yearsBetween);
    }
}

আউটপুট:

Days between 2024-01-01 and 2024-12-23: 357
Months between 2024-01-01 and 2024-12-23: 11
Years between 2024-01-01 and 2024-12-23: 0

ব্যাখ্যা:

  • ChronoUnit.DAYS.between(startDate, endDate) ব্যবহার করে দুটি তারিখের মধ্যে দিন হিসেবে পার্থক্য বের করা হয়েছে।
  • ChronoUnit.MONTHS.between() এবং ChronoUnit.YEARS.between() মেথডগুলি ব্যবহার করে মাস এবং বছর হিসাব করা হয়েছে।

3. Temporal Adjusters (Temporal.adjustInto())

Java 8-এ Temporal.adjustInto() মেথড ব্যবহার করে আমরা একটি Temporal অবজেক্টে কাস্টম তারিখ এবং সময়ের পরিবর্তন করতে পারি। এটি TemporalAdjuster ইন্টারফেস ব্যবহার করে।

Temporal Adjuster উদাহরণ:

import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

public class TemporalAdjustersExample {
    public static void main(String[] args) {
        // Create a LocalDate instance
        LocalDate date = LocalDate.of(2024, 12, 23);
        
        // Adjust the date to the next Sunday
        LocalDate nextSunday = date.with(TemporalAdjusters.next(java.time.DayOfWeek.SUNDAY));
        System.out.println("Next Sunday: " + nextSunday);
        
        // Adjust the date to the first day of the month
        LocalDate firstDayOfMonth = date.with(TemporalAdjusters.firstDayOfMonth());
        System.out.println("First Day of the Month: " + firstDayOfMonth);
        
        // Adjust the date to the last day of the month
        LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
        System.out.println("Last Day of the Month: " + lastDayOfMonth);
    }
}

আউটপুট:

Next Sunday: 2024-12-29
First Day of the Month: 2024-12-01
Last Day of the Month: 2024-12-31

ব্যাখ্যা:

  • TemporalAdjusters.next() মেথডটি দেওয়া তারিখ থেকে পরবর্তী নির্দিষ্ট দিনের (যেমন, রবিবার) তারিখ নির্ধারণ করে।
  • TemporalAdjusters.firstDayOfMonth() এবং TemporalAdjusters.lastDayOfMonth() মেথডগুলি বর্তমান মাসের প্রথম এবং শেষ দিনের তারিখ নির্ধারণ করে।

সারাংশ:

  • Temporal ইন্টারফেসটি তারিখ এবং সময়ের বিভিন্ন অংশে পরিবর্তন করার জন্য ব্যবহৃত হয় এবং এটি LocalDate, LocalTime, LocalDateTime, ZonedDateTime ইত্যাদির জন্য একটি সাধারণ চুক্তি প্রদান করে।
  • ChronoUnit এন্টামটি সময়ের একক (যেমন সেকেন্ড, মিনিট, দিন, মাস, বছর) নির্ধারণ করে এবং Temporal অবজেক্টের সাথে কাজ করতে সহায়তা করে।
  • TemporalAdjusters ইন্টারফেসটি ব্যবহার করে আপনি বিভিন্ন কাস্টম তারিখ এবং সময় ম্যানিপুলেশন করতে পারেন যেমন, পরবর্তী রবিবার, মাসের প্রথম দিন ইত্যাদি।

Java 8 এর java.time প্যাকেজটি সময় এবং তারিখের সাথে কাজ করার জন্য অত্যন্ত শক্তিশালী এবং সহজ API সরবরাহ করে, যা আগের java.util.Date এবং Calendar ক্লাসের তুলনায় অনেক বেশি কার্যকরী এবং কম্প্যাক্ট।

Content added By
Promotion

Are you sure to start over?

Loading...