Un java.util.Date
oggetto è una sorta di timestamp - contiene un certo numero di millisecondi dal 1 gennaio 1970, 00:00:00 UTC. Pertanto non è possibile utilizzare un oggetto standard Date
per contenere solo un giorno/mese/anno, senza un orario.
Per quanto ne so, non esiste un modo davvero semplice per confrontare le date prendendo in considerazione solo la data (e non l'ora) nell'API Java standard. È possibile utilizzare la classe Calendar
e deselezionare le ore, minuti, secondi e millesimi di secondo:
Calendar cal = Calendar.getInstance();
cal.clear(Calendar.HOUR_OF_DAY);
cal.clear(Calendar.AM_PM);
cal.clear(Calendar.MINUTE);
cal.clear(Calendar.SECOND);
cal.clear(Calendar.MILLISECOND);
Fate lo stesso con un altro oggetto Calendar
che contiene la data che si desidera confrontare, e utilizzare le after()
o before()
metodi per fai il confronto.
Come spiegato nel Javadoc di java.util.Calendar.clear (campo int):
Il HOUR_OF_DAY, ORA e AM_PM campi vengono gestiti in modo indipendente e la risoluzione regola per l'ora del giorno viene applicata. Cancellare uno dei campi non ripristina il valore dell'ora del giorno di questo calendario. Usa set (Calendar.HOUR_OF_DAY, 0) per ripristinare il valore dell'ora.
modifica - La risposta sopra è del 2010; in Java 8, c'è una nuova data e ora API nel pacchetto java.time
che è molto più potente e utile delle vecchie classi java.util.Date
e java.util.Calendar
. Usa le nuove classi di data e ora invece di quelle vecchie.
Vuoi confrontare due date per vedere se sono nello stesso giorno (ignorando il tempo), o vuoi stampare una data senza la parte del tempo? Ho avuto l'impressione che volevi il primo, ma le risposte sembrano pensare che tu voglia il secondo –
Bene, prima parla del confronto, e poi dà a stamparlo come un esempio per indicare cosa intende per nessun timestamp, quindi sto indovinando che vuole davvero confrontare il tempo piuttosto che stamparlo, ma se è quello che vuole, probabilmente non dovrebbe aver menzionato la stampa, dal momento che confonde il problema. –