Υπάρχουν διάφοροι τρόποι σύγκρισης ημερομηνιών Java. Εσωτερικά, μια ημερομηνία αντιπροσωπεύεται ως ένα (μακρύ) χρονικό σημείο - ο αριθμός των χιλιοστών του δευτερολέπτου που έχουν παρέλθει από την 1η Ιανουαρίου 1970. Στην Java, η Ημερομηνία είναι ένα αντικείμενο, πράγμα που σημαίνει ότι περιλαμβάνει πολλές μεθόδους σύγκρισης. Οποιαδήποτε μέθοδος σύγκρισης δύο ημερομηνιών θα συγκρίνει ουσιαστικά τους χρόνους των ημερομηνιών.
Βήματα
Μέθοδος 1 από 4: Χρήση της σύγκρισης To
Βήμα 1. Χρησιμοποιήστε το compareTo
Ημερομηνία υλοποιεί Συγκρίσιμα και έτσι δύο ημερομηνίες μπορούν να συγκριθούν απευθείας με τη μέθοδο compareTo. Εάν οι ημερομηνίες είναι για το ίδιο χρονικό σημείο, η μέθοδος επιστρέφει μηδέν. Εάν η ημερομηνία που συγκρίνεται είναι πριν από το όρισμα ημερομηνίας, επιστρέφεται μια τιμή μικρότερη από μηδέν. Εάν η ημερομηνία που συγκρίνεται είναι μετά το όρισμα ημερομηνίας, επιστρέφεται τιμή μεγαλύτερη από μηδέν. Εάν οι ημερομηνίες είναι ίσες, επιστρέφεται η τιμή 0.
Βήμα 2. Δημιουργήστε τα αντικείμενα ημερομηνίας
Θα χρειαστεί να δημιουργήσετε κάθε αντικείμενο ημερομηνίας για να μπορέσετε να τα συγκρίνετε. Ένας τρόπος για να γίνει αυτό είναι να χρησιμοποιήσετε την κλάση SimpleDateFormat. Επιτρέπει την εύκολη εισαγωγή τιμών ημερομηνίας σε αντικείμενα ημερομηνίας.
SimpleDateFormat sdf = νέο SimpleDateFormat ("εεεε-ΜΜ-ηη"); // Για τη δήλωση τιμών σε νέα αντικείμενα ημερομηνίας. χρησιμοποιήστε την ίδια μορφή ημερομηνίας κατά τη δημιουργία ημερομηνιών Ημερομηνία ημερομηνίας1 = sdf.parse ("1995-02-23"). // ημερομηνία1 είναι 23 Φεβρουαρίου 1995 Ημερομηνία ημερομηνίας2 = sdf.parse ("2001-10-31"); // ημερομηνία2 είναι 31 Οκτωβρίου 2001 Ημερομηνία ημερομηνίας3 = sdf.parse ("1995-02-23"); // η ημερομηνία 3 είναι 23 Φεβρουαρίου 1995
Βήμα 3. Συγκρίνετε τα αντικείμενα ημερομηνίας
Ο παρακάτω κώδικας θα σας δείξει κάθε περίπτωση - μικρότερη από, ίση και μεγαλύτερη από.
date1.compareTo (date2); // date1 <date2, επιστρέφει λιγότερο από 0 date2.compareTo (date1); // date2> date1, επιστρέφει μεγαλύτερη από 0 date1.compareTo (date3); // date1 = date3, έτσι θα εκτυπωθεί 0 στην κονσόλα
Μέθοδος 2 από 4: Χρήση ίσων, μετά και πριν
Βήμα 1. Χρησιμοποιήστε ίσα, μετά και πριν
Οι ημερομηνίες μπορούν να συγκριθούν με τις ίσες, μετά και πριν από τις μεθόδους. Εάν δύο ημερομηνίες είναι για το ίδιο χρονικό σημείο, η μέθοδος ίσα θα επιστρέψει αληθής. Τα παραδείγματα θα χρησιμοποιήσουν ημερομηνίες που δημιουργήθηκαν προηγουμένως από τη μέθοδο σύγκρισης.
Βήμα 2. Συγκρίνετε χρησιμοποιώντας τη μέθοδο πριν
Ο παρακάτω κώδικας δείχνει μια αληθινή και ψευδή περίπτωση. Εάν η ημερομηνία 1 είναι πριν από την ημερομηνία2, πριν επιστρέψει true. Εάν δεν είναι, πριν επιστρέψει false.
System.out.print (date1.before (date2)); // εκτυπώνει αληθινό System.out.print (date2.before (date2)); // εκτυπώνει false
Βήμα 3. Συγκρίνετε χρησιμοποιώντας τη μέθοδο μετά
Ο παρακάτω κώδικας δείχνει μια αληθινή και ψευδή περίπτωση. Εάν η ημερομηνία2 είναι μετά την ημερομηνία1, μετά επιστρέφει true. Εάν δεν είναι, μετά επιστρέφει false.
System.out.print (date2.after (date1)); // prints true System.out.print (date1.after (date2)); // prints false
Βήμα 4. Συγκρίνετε χρησιμοποιώντας τη μέθοδο ίσα
Ο παρακάτω κώδικας δείχνει μια αληθινή και ψευδή περίπτωση. Εάν οι ημερομηνίες είναι ίσες, το ίσο επιστρέφει true. Εάν δεν είναι, το ίσο επιστρέφει ψευδές.
System.out.print (date1.equals (date3)); // prints true System.out.print (date1.equals (date2)); // prints false
Μέθοδος 3 από 4: Χρήση της τάξης ημερολογίου
Βήμα 1. Χρησιμοποιήστε το ημερολόγιο
Η κατηγορία ημερολογίου έχει επίσης συγκρίσεις με, ίσες, μετά και πριν από μεθόδους που λειτουργούν με τον ίδιο τρόπο όπως περιγράφεται παραπάνω για την κλάση ημερομηνιών. Έτσι, εάν οι πληροφορίες ημερομηνίας διατηρούνται σε ένα ημερολόγιο, δεν χρειάζεται να εξαγάγετε την ημερομηνία μόνο για να πραγματοποιήσετε μια σύγκριση.
Βήμα 2. Δημιουργήστε παρουσίες του Ημερολογίου
Για να χρησιμοποιήσετε τις μεθόδους ημερολογίου, θα χρειαστείτε μερικές παρουσίες ημερολογίου. Ευτυχώς, μπορείτε απλώς να πάρετε τους χρόνους από τις ήδη δημιουργημένες παρουσίες ημερομηνίας.
Ημερολόγιο cal1 = Calendar.getInstance (); // δηλώνει cal1 Ημερολόγιο cal2 = Calendar.getInstance (); // δηλώνει cal2 Ημερολόγιο cal3 = Calendar.getInstance (); // δηλώνει cal3 cal1.setTime (ημερομηνία 1); // εφαρμόζει την ημερομηνία στο cal1 cal2.setTime (ημερομηνία2). cal3.setTime (ημερομηνία3);
Βήμα 3. Συγκρίνετε cal1 και cal2 χρησιμοποιώντας πριν
Ο παρακάτω κωδικός θα πρέπει να εκτυπώνεται true, καθώς το cal1 είναι πριν το cal2.
System.out.print (cal1.before (cal2)); // θα εκτυπωθεί true
Βήμα 4. Συγκρίνετε cal1 και cal2 χρησιμοποιώντας after
Ο παρακάτω κώδικας θα πρέπει να εκτυπώνει ψευδώς, επειδή το cal1 είναι πριν το cal2.
System.out.print (cal1.after (cal2)); // εκτυπώνει false
Βήμα 5. Συγκρίνετε cal1 και cal2 χρησιμοποιώντας ίσα
Ο παρακάτω κώδικας θα δείξει ένα παράδειγμα αληθινής και ψευδούς περίπτωσης. Η κατάσταση εξαρτάται από τη σύγκριση των παρουσιών ημερολογίου. Ο κωδικός θα πρέπει να εκτυπώνει "true" και στη συνέχεια "false" στην επόμενη γραμμή.
System.out.println (cal1.equals (cal3)); // εκτυπώνει true: cal1 == cal3 System.out.print (cal1.equals (cal2)); // εκτυπώνει false: cal1! = cal2
Μέθοδος 4 από 4: Χρήση του getTime
Βήμα 1. Χρησιμοποιήστε το getTime
Είναι επίσης δυνατή η άμεση σύγκριση του χρονικού σημείου δύο ημερομηνιών, αν και οποιαδήποτε από τις προηγούμενες προσεγγίσεις είναι πιθανό να είναι πιο ευανάγνωστη και τόσο προτιμότερη. Αυτό θα είναι μια σύγκριση δύο πρωτόγονων τύπων δεδομένων, οπότε μπορεί να γίνει με "" και "==".
Βήμα 2. Δημιουργήστε αντικείμενα μεγάλης διάρκειας
Για να συγκρίνετε τις ημερομηνίες, πρέπει να δημιουργήσετε μεγάλους ακέραιους αριθμούς με τα δεδομένα από τα αντικείμενα ημερομηνίας που δημιουργήθηκαν προηγουμένως. Ευτυχώς, η μέθοδος getTime () θα κάνει το μεγαλύτερο μέρος της δουλειάς για εσάς.
long time1 = getTime (ημερομηνία 1); // δηλώνει πρωτόγονο χρόνο1 από ημερομηνία1 μεγάλο χρονικό διάστημα2 = getTime (ημερομηνία2); // δηλώνει πρωτόγονο χρόνο2 από την ημερομηνία2
Βήμα 3. Κάντε μια σύγκριση μικρότερη
Χρησιμοποιήστε το σύμβολο λιγότερο από <() για να συγκρίνετε αυτές τις δύο ακέραιες τιμές. Δεδομένου ότι ο χρόνος1 είναι μικρότερος από τον χρόνο 2, το πρώτο μήνυμα πρέπει να εκτυπωθεί. Η δήλωση else περιλαμβάνεται για σωστή σύνταξη.
if (time1 <time2) {System.out.println ("date1 is before date2"); // θα εκτυπώνεται από time1 <time2} else {System.out.println ("date1 is not before date2"); }
Βήμα 4. Κάντε μια σύγκριση μεγαλύτερη
Χρησιμοποιήστε το σύμβολο μεγαλύτερο από (>) για να συγκρίνετε αυτές τις δύο ακέραιες τιμές. Δεδομένου ότι ο χρόνος1 είναι μεγαλύτερος από τον χρόνο 2, το πρώτο μήνυμα πρέπει να εκτυπωθεί. Η δήλωση else περιλαμβάνεται για σωστή σύνταξη.
if (time2> time1) {System.out.println ("date2 is after date1"); // θα εκτυπώνεται από time2> time1} else {System.out.println ("date2 is not after date1"); }
Βήμα 5. Κάντε μια σύγκριση ίση
Χρησιμοποιήστε το σύμβολο για να ελέγξετε την ισότητα (==) για να συγκρίνετε αυτές τις δύο ακέραιες τιμές για ισότητα. Δεδομένου ότι ο χρόνος1 είναι ίσος με τον χρόνο3, το πρώτο μήνυμα πρέπει να εκτυπωθεί. Εάν το πρόγραμμα φτάσει στη δήλωση else, αυτό σημαίνει ότι οι χρόνοι δεν είναι ίσοι.
if (time1 == time2) {System.out.println ("οι ημερομηνίες είναι ίσες"); } else {System.out.println ("οι ημερομηνίες δεν είναι ίσες"); // θα εκτυπώνεται από τη στιγμή1! = ώρα2}