Esistono molti modi per confrontare due date nel linguaggio di programmazione Java. Nei computer, una data è rappresentata da un numero (il tipo di dati Long) in unità di tempo, ovvero il numero di millisecondi trascorsi dal 1 gennaio 1970. In Java, Date è un oggetto, il che significa che ha diversi metodi per fare confronti. Qualsiasi metodo utilizzato per confrontare due date è essenzialmente confrontare le unità di tempo delle due date.
Fare un passo
Metodo 1 di 4: Utilizzo di compareTo
Passaggio 1. Utilizzare compareTo
L'oggetto Date implementa Comparable in modo che 2 date possano essere confrontate tra loro direttamente con il metodo compareTo. Se entrambe le date hanno lo stesso numero in unità di tempo, il metodo restituisce zero. Se la seconda data è inferiore alla prima, viene restituito un valore inferiore a zero. Se la seconda data è maggiore della prima, il metodo restituisce un valore maggiore di zero. Se entrambe le date sono uguali, il metodo restituirà un valore null.
Passaggio 2. Crea più oggetti Data
È necessario creare più oggetti Date prima di confrontarli. Uno dei modi più semplici per farlo è usare la classe SimpleDateFormat. Questa classe semplifica la conversione di un valore di data di input in un oggetto Date.
SimpleDateFormat sdf = new SimpleDateFormat ("aaaa-MM-gg"). Per dichiarare un valore in una nuova ''Data oggetto'', utilizzare lo stesso formato di data durante la creazione della data. Data data1 = 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à esempi per ogni caso: minore di, uguale e maggiore di.
data1.compareTo(data2); //data1 < data2, restituisce un valore minore di 0 date2.compareTo(data1); //data2 > data1, restituisce un valore maggiore di 0 date1.compareTo(date3); //date1 = date3, quindi produrrà 0 su console
Metodo 2 di 4: Utilizzo di Uguale, Dopo e Prima
Passaggio 1. Utilizzare uguale, dopo e prima
Le date possono essere confrontate utilizzando i metodi equals, after e before. Se due date hanno lo stesso valore temporale, il metodo equals restituisce true. L'esempio seguente utilizzerà l'oggetto Date creato nel metodo compareTo di esempio.
Passaggio 2. Confronta con il metodo precedente
Il codice seguente mostra un caso di esempio che restituisce true e false. Se date1 è una data precedente a date2, il metodo before restituisce true. In caso contrario, il metodo before restituisce false.
System.out.print(date1.before(date2)); // visualizza il valore ''true'' System.out.print(date2.before(date2)); // restituisce il valore ''false''
Passaggio 3. Confronta utilizzando il metodo dopo
Il codice seguente mostra un caso di esempio che restituisce true e false. Se date2 è la data successiva a date1, il metodo after restituisce true. In caso contrario, il metodo after restituirà false.
System.out.print(date2.after(date1)); // visualizza il valore ''true'' System.out.print(date1.after(date2)); // visualizza il valore ''false''
Passaggio 4. Confronta con il metodo equals
Il codice seguente mostra un caso di esempio che restituisce true e false. Se entrambe le date sono uguali, il metodo equals restituisce true. In caso contrario, il metodo equals restituisce false.
System.out.print(date1.equals(date3)); // visualizza il valore ''true'' System.out.print(date1.equals(date2)); // visualizza il valore ''false''
Metodo 3 di 4: utilizzo del calendario delle classi
Passaggio 1. Utilizzare il calendario della classe
La classe Calendar dispone anche di metodi compareTo, equals, after e before che funzionano come quelli descritti in precedenza per la classe Date. Quindi, se le informazioni sulla data sono memorizzate in un Class Calendar, non è necessario estrarre la data solo per fare un confronto.
Passaggio 2. Creare un'istanza di Calendar
Per utilizzare i metodi in Class Calendar, devi creare più istanze di Calendar. Fortunatamente, puoi utilizzare i valori di un'istanza Date creata in precedenza.
Calendario cal1 = Calendar.getInstance(); //dichiara cal1 Calendar cal2 = Calendar.getInstance(); //dichiara cal2 Calendar cal3 = Calendar.getInstance(); //dichiara cal3 cal1.setTime(date1); //inserisci la data in cal1 cal2.setTime(date2); cal3.setTime(data3);
Passaggio 3. Confronta cal1 e cal2 utilizzando il metodo before
Il codice seguente restituirà il valore di tr
System.out.print(cal1.before(cal2)); //restituirà il valore ''vero''
Passaggio 4. Confronta cal1 e cal2 utilizzando il metodo after
Il codice seguente restituirà false perché cal1 è la data precedente a cal2.
System.out.print(cal1.after(cal2)); // restituisce il valore ''false''
Passaggio 5. Confronta cal1 e cal2 utilizzando il metodo equals
Il codice seguente mostrerà un caso di esempio che restituisce true e false. Lo stato dipende dall'istanza di Calendar confrontata. Il codice seguente restituirà il valore "true", quindi "false" nella riga successiva.
System.out.println(cal1.equals(cal3)); // restituisce il valore ''true'': cal1 == cal3 System.out.print(cal1.equals(cal2)); // restituisce il valore ''false'': cal1 != cal2
Metodo 4 di 4: Utilizzo di getTime
Passaggio 1. Usa getTime
Puoi anche confrontare direttamente i valori dell'unità di tempo di due date, sebbene i due metodi precedenti possano essere più facili da leggere e preferibili. In questo modo confronterai 2 tipi di dati primitivi, in modo da poter utilizzare gli operandi "", e "==".
Passaggio 2. Creare un oggetto tempo in formato numerico lungo
Prima di poter confrontare le date, è necessario creare un valore Intero lungo dall'oggetto Date creato in precedenza. Fortunatamente, il metodo getTime() lo farà per te.
tempo lungo1 = getTime(data1); //dichiara time1 primitivo di date1 long time2 = getTime(date2); //dichiara il valore primitivo time2 di date2
Passaggio 3. Eseguire un confronto inferiore a
Utilizzare l'operando minore di (<) per confrontare questi due valori interi. Poiché time1 è inferiore a time2, verrà visualizzato il primo messaggio. L'istruzione else è inclusa per completare la sintassi.
if(time1 < time2){ System.out.println("date1 è la data precedente a date2"); //verrà visualizzato perché ora1 < ora2 } else{ System.out.println("data1 non è una data precedente a data2"); }
Passaggio 4. Eseguire un confronto maggiore di
Utilizzare l'operando maggiore di (>) per confrontare questi due valori interi. Poiché time1 è maggiore di time2, verrà visualizzato il primo messaggio. L'istruzione else è inclusa per completare la sintassi.
if(time2 > time1){ System.out.println("date2 è la data successiva a date1"); //verrà visualizzato perché ora2 > ora1 } else{ System.out.println("data2 non è la data successiva a data1"); }
Passaggio 5. Eseguire un confronto uguale
Utilizzare la funzione operando per verificare l'uguaglianza dei valori (==) per confrontare questi due interi. Poiché time1 è uguale a time3, apparirà il primo messaggio. Se il flusso del programma va nell'istruzione else, significa che i due tempi non hanno lo stesso valore.
if(time1 == time2){ System.out.println("entrambe le date sono uguali"); } else{ System.out.println("Il primo non è uguale al secondo"); // mostrerà perché time1 != time2 }