जावा में तिथियों की तुलना: एक व्यापक गाइड
जावा तिथियों की तुलना करने के कई तरीके प्रदान करता है, जिनमें से प्रत्येक की अपनी ताकत और कमजोरियाँ हैं। यह गाइड सबसे सामान्य विधियों का पता लगाता है, पुराने java.util.Date
वर्ग और आधुनिक java.time
API दोनों पर ध्यान केंद्रित करता है, जिसकी नई परियोजनाओं के लिए दृढ़ता से अनुशंसा की जाती है।
विषयवस्तु की तालिका
before()
औरafter()
का उपयोग करनाequals()
का उपयोग करनाcompareTo()
का उपयोग करनाjava.time
के साथ आधुनिक दिनांक/समय तुलना
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()
) स्पष्ट और असंदिग्ध तुलनाएँ प्रदान करते हैं, जिससे आपका कोड अधिक पठनीय और रखरखाव योग्य बनता है।