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));
    }

}
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top