Java GregorianCalendar Che cosa sto facendo di sbagliato? data sbagliata?
-
05-10-2019 - |
Domanda
Ciao Ho un problema con GregorianCalendar.
Cosa c'è di sbagliato in là?
Come risultato è 2010/06/01 e 2010/05/31 no?
package test;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Main {
public static void main(String[] args) {
Calendar cal = new GregorianCalendar(2010, 5, 31);
System.out.println(cal.get(Calendar.YEAR) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.DAY_OF_MONTH));
}
}
Soluzione
Java conta mesi da 0, quindi 5 è giugno. E 'sempre più sicuro di utilizzare le costanti. Quindi mi sento di scrivere:
Calendar cal = new GregorianCalendar(2010, Calendar.MAY, 31);
Lo stesso vale per il vostro calendario di stampa. Se lo fai cal.get(Calendar.MONTH)
si ottiene 6 luglio senso.
Altri suggerimenti
Questo è perché il numero mese è a base zero, quindi si sta cercando di set 31 giugno, ma Giugno è solo 30 giorni, in modo che viene convertito in 1 luglio.
toadd a ciò che le risposte di cui sopra, dal momento che non v'è 31 ° giorno di giugno del calendario lo promuove al primo giorno valido in quanto Calendar.setLenient è true per impostazione predefinita.