Question

Bonjour, j'ai un problème avec GregorianCalendar.

Qu'est-ce qui ne va pas là-dedans?

Comment résultat est 01/06/2010 et non 2010/05/31?

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

}
Était-ce utile?

La solution

Java compte mois de 0, donc 5 est Juin. Il est toujours plus sûr d'utiliser les constantes. Je voudrais donc écrire:

Calendar cal = new GregorianCalendar(2010, Calendar.MAY, 31);

Le même applique à votre calendrier imprimé sur. Si vous cal.get(Calendar.MONTH) vous obtenez 6 ce qui signifie juillet.

Autres conseils

Ceci est, car le nombre de mois est basé sur zéro, de sorte que vous essayez de définir 31 Juin, mais Juin est seulement 30 jours, il est converti au 1er Juillet.

Toadd à ce que les réponses ci-dessus, car il n'y a pas 31 en Juin le calendrier favorise au prochain jour valide parce que Calendar.setLenient est vrai par défaut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top