Esistono vari modi per confrontare le date Java. Internamente, una data è rappresentata come un punto (lungo) nel tempo, ovvero il numero di millisecondi trascorsi dal 1 gennaio 1970. In Java, Date è un oggetto, il che significa che include più metodi di confronto. Qualsiasi metodo di confronto di due date confronterà essenzialmente i tempi delle date.
Passi
Metodo 1 di 4: Utilizzo di compareTo
Passaggio 1. Utilizzare compareTo
Date implementa Comparable e quindi due date possono essere confrontate direttamente con il metodo compareTo. Se le date sono per lo stesso momento, il metodo restituisce zero. Se la data da confrontare è precedente all'argomento della data, viene restituito un valore inferiore a zero. Se la data confrontata è successiva all'argomento date, viene restituito un valore maggiore di zero. Se le date sono uguali, viene restituito il valore 0.
Passaggio 2. Creare gli oggetti data
Dovrai creare ogni oggetto data prima di poter iniziare a confrontarli. Un modo per farlo è usare la classe SimpleDateFormat. Consente di inserire facilmente i valori della data negli oggetti data.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //Per dichiarare valori in nuovi oggetti data. usa lo stesso formato della data durante la creazione delle date Date date1 = sdf.parse("1995-02-23"); //date1 è il 23 febbraio 1995 Date date2 = sdf.parse("2001-10-31"); //date2 è il 31 ottobre 2001 Date date3 = sdf.parse("1995-02-23"); //la data3 è il 23 febbraio 1995
Passaggio 3. Confronta gli oggetti data
Il codice seguente ti mostrerà ogni caso: minore di, uguale e maggiore di.
data1.compareTo(data2); //data1 < data2, restituisce meno di 0 date2.compareTo(data1); //data2 > data1, restituisce maggiore di 0 date1.compareTo(date3); //date1 = date3, quindi stamperà 0 sulla console
Metodo 2 di 4: Utilizzo di Uguale, Dopo e Prima
Passaggio 1. Usa uguale, dopo e prima
Le date possono essere confrontate con i metodi uguali, dopo e prima. Se due date sono per lo stesso punto nel tempo, il metodo equals restituirà true. Gli esempi utilizzeranno date create in precedenza dal metodo compareTo.
Passaggio 2. Confronta utilizzando il metodo prima
Il codice seguente mostra un caso vero e falso. Se date1 è precedente a date2, before restituisce true. In caso contrario, prima restituisce false.
System.out.print(date1.before(date2)); //stampa vero System.out.print(date2.before(date2)); //stampa false
Passaggio 3. Confronta utilizzando il metodo dopo
Il codice seguente mostra un caso vero e falso. Se date2 è successivo a date1, after restituisce true. In caso contrario, dopo restituisce false.
System.out.print(date2.after(date1));//stampa true System.out.print(date1.after(date2));//stampa false
Passaggio 4. Confronta utilizzando il metodo equals
Il codice seguente mostra un caso vero e falso. Se le date sono uguali, uguale restituisce vero. In caso contrario, equals restituisce false.
System.out.print(date1.equals(date3));//prints true System.out.print(date1.equals(date2));//prints false
Metodo 3 di 4: utilizzo della classe Calendar
Passaggio 1. Usa il calendario
La classe calendar ha anche i metodi compareTo, equals, after e before che funzionano nello stesso modo descritto sopra per la classe date. Quindi, se le informazioni sulla data vengono conservate in un calendario, non è necessario estrarre la data solo per eseguire un confronto.
Passaggio 2. Crea istanze di Calendar
Per utilizzare i metodi di Calendar, avrai bisogno di alcune istanze di Calendar. Fortunatamente, puoi semplicemente prendere i tempi dalle istanze Date già create.
Calendario cal1 = Calendar.getInstance(); //dichiara cal1 Calendar cal2 = Calendar.getInstance(); //dichiara cal2 Calendar cal3 = Calendar.getInstance(); //dichiara cal3 cal1.setTime(date1); //applica la data a cal1 cal2.setTime(date2); cal3.setTime(data3);
Passaggio 3. Confronta cal1 e cal2 utilizzando prima
Il codice seguente dovrebbe stampare true poiché cal1 è prima di cal2.
System.out.print(cal1.before(cal2)); // stamperà vero
Passaggio 4. Confronta cal1 e cal2 utilizzando after
Il codice seguente dovrebbe stampare false poiché cal1 è prima di cal2.
System.out.print(cal1.after(cal2)); //stampa false
Passaggio 5. Confronta cal1 e cal2 usando equals
Il codice seguente mostrerà un esempio di un caso vero e falso. La condizione dipende dalle istanze del calendario confrontate. Il codice dovrebbe stampare "true", quindi "false" nella riga successiva.
System.out.println(cal1.equals(cal3)); //stampa true: cal1 == cal3 System.out.print(cal1.equals(cal2)); //stampa false: cal1 != cal2
Metodo 4 di 4: Utilizzo di getTime
Passaggio 1. Usa getTime
È anche possibile confrontare direttamente il punto temporale di due date, anche se è probabile che uno degli approcci precedenti sia più leggibile e quindi preferibile. Questo sarà un confronto tra due tipi di dati primitivi, quindi può essere fatto con "", e "==".
Passaggio 2. Creare gli oggetti a lungo termine
Prima di poter confrontare le date, è necessario creare interi lunghi con i dati degli oggetti Date creati in precedenza. Fortunatamente, il metodo getTime() farà la maggior parte del lavoro per te.
tempo lungo1 = getTime(data1); //dichiara time1 primitivo da date1 long time2 = getTime(date2); //dichiara time2 primitivo da date2
Passaggio 3. Fare un confronto inferiore
Utilizzare il simbolo minore di (<) per confrontare questi due valori interi. Poiché l'ora 1 è inferiore all'ora 2, il primo messaggio dovrebbe essere stampato. L'istruzione else è inclusa per una corretta sintassi.
if(time1 < time2){ System.out.println("date1 è precedente a date2"); //verrà stampato da time1 <time2 } else{ System.out.println("date1 non è precedente a date2"); }
Passaggio 4. Fai un confronto maggiore di
Utilizzare il simbolo maggiore di (>) per confrontare questi due valori interi. Poiché l'ora 1 è maggiore dell'ora 2, il primo messaggio dovrebbe essere stampato. L'istruzione else è inclusa per una corretta sintassi.
if(time2 > time1){ System.out.println("date2 è successivo a date1"); //verrà stampato da ora2 > ora1 } else{ System.out.println("data2 non è successiva a data1"); }
Passaggio 5. Fare un confronto uguale
Utilizzare il simbolo per verificare l'uguaglianza (==) per confrontare questi due valori interi per l'uguaglianza. Poiché time1 è uguale a time3, il primo messaggio dovrebbe essere stampato. Se il programma arriva all'istruzione else, significa che i tempi non sono uguali.
if(time1 == time2){ System.out.println("le date sono uguali"); } else{ System.out.println("le date non sono uguali"); // stamperà da time1 != time2 }