Java Programming

जावा में तिथियों की तुलना: एक व्यापक मार्गदर्शिका

Spread the love

जावा में तिथियों की तुलना: एक व्यापक गाइड

जावा तिथियों की तुलना करने के कई तरीके प्रदान करता है, जिनमें से प्रत्येक की अपनी ताकत और कमजोरियाँ हैं। यह गाइड सबसे सामान्य विधियों का पता लगाता है, पुराने java.util.Date वर्ग और आधुनिक java.time API दोनों पर ध्यान केंद्रित करता है, जिसकी नई परियोजनाओं के लिए दृढ़ता से अनुशंसा की जाती है।

विषयवस्तु की तालिका

before() और after() का उपयोग करना

before() और after() विधियाँ, जो java.util.Date वर्ग का हिस्सा हैं, सरल तुलनाएँ प्रदान करती हैं। before(Date otherDate) true देता है यदि वर्तमान तिथि otherDate से पहले है, और after(Date otherDate) true देता है यदि यह बाद में है। हालाँकि, याद रखें कि java.util.Date में समय की जानकारी शामिल है, जो तुलना को प्रभावित करती है।


import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class DateComparison {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = formatter.parse("2023-10-26");
        Date date2 = formatter.parse("2024-01-15");

        System.out.println("date1 before date2: " + date1.before(date2)); // true
        System.out.println("date2 after date1: " + date2.after(date1)); // true
    }
}

equals() का उपयोग करना

equals() विधि दो java.util.Date ऑब्जेक्ट्स के बीच सटीक समानता की जाँच करती है। true वापस करने के लिए तिथि और समय दोनों घटकों का मिलान होना चाहिए। एक मिलीसेकंड का भी अंतर false में परिणाम देगा।


import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class DateComparison {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date1 = formatter.parse("2023-10-26 10:00:00");
        Date date2 = formatter.parse("2023-10-26 10:00:00");

        System.out.println("date1 equals date2: " + date1.equals(date2)); // true
    }
}

compareTo() का उपयोग करना

compareTo(Date otherDate) विधि अधिक सूक्ष्म तुलना प्रदान करती है। यह देता है:

  • एक ऋणात्मक मान यदि वर्तमान तिथि otherDate से पहले है।
  • शून्य यदि तिथियाँ समान हैं।
  • एक धनात्मक मान यदि वर्तमान तिथि otherDate के बाद है।

import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class DateComparison {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = formatter.parse("2023-10-26");
        Date date2 = formatter.parse("2024-01-15");

        System.out.println("date1 compareTo date2: " + date1.compareTo(date2)); // Negative
        System.out.println("date2 compareTo date1: " + date2.compareTo(date1)); // Positive
    }
}

java.time के साथ आधुनिक दिनांक/समय तुलना

java.time API (जावा 8 और बाद में) दिनांक और समय को संभालने के लिए एक बेहतर तरीका प्रदान करता है। LocalDate, LocalDateTime और ZonedDateTime जैसे वर्ग अधिक सटीक और स्पष्ट तुलनाएँ प्रदान करते हैं। वे java.util.Date के नुकसानों से भी बचते हैं।


import java.time.LocalDate;
import java.time.LocalDateTime;

public class ModernDateComparison {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2023, 10, 26);
        LocalDate date2 = LocalDate.of(2024, 1, 15);

        System.out.println("date1 is before date2: " + date1.isBefore(date2)); // true
        System.out.println("date1 is after date2: " + date1.isAfter(date2)); // false
        System.out.println("date1 equals date2: " + date1.equals(date2)); // false


        LocalDateTime dateTime1 = LocalDateTime.of(2023, 10, 26, 10, 0, 0);
        LocalDateTime dateTime2 = LocalDateTime.of(2023, 10, 26, 10, 0, 0);
        System.out.println("dateTime1 equals dateTime2: " + dateTime1.equals(dateTime2)); //true

    }
}

java.time API के तरीके (isBefore(), isAfter(), equals()) स्पष्ट और असंदिग्ध तुलनाएँ प्रदान करते हैं, जिससे आपका कोड अधिक पठनीय और रखरखाव योग्य बनता है।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *