Java GregorianCalendar Qu'est-ce que je fais mal? Mauvaise date?
-
05-10-2019 - |
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));
}
}
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.