উদাহরণ সহ Temporal এবং ChronoUnits এর ব্যবহার

Temporal এবং ChronoUnits - জাভা টাইম প্যাকেজ (Java.time Package) - Java Technologies

265

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...