Pourquoi Java Calendrier set(int année, int mois, int jour) ne retourne pas la bonne date?
Selon doc, calendar set() est:
Http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#set%28int,%20int,%20int%29
set(int year, int month, int date)
Sets the values for the calendar fields YEAR, MONTH, and DAY_OF_MONTH.
Code:
Calendar c1 = GregorianCalendar.getInstance();
c1.set(2000, 1, 30); //January 30th 2000
Date sDate = c1.getTime();
System.out.println(sDate);
Sortie:
Wed Mar 01 19:32:21 JST 2000
Pourquoi ce n'est pas Jan 30 ???
51
3 answers
1 pour le mois est février. Le 30 février est changé au 1er mars. Vous devez définir 0 pour le mois. Le mieux est d'utiliser la constante définie dans le Calendrier:
c1.set(2000, Calendar.JANUARY, 30);
98
Author: Benoit Thiery, 2011-02-08 10:40:20
Les mois dans l'objet Calendrier commencent à partir de 0
0 = January = Calendar.JANUARY
1 = february = Calendar.FEBRUARY
19
Author: fmucar, 2011-02-08 10:48:20
La date sélectionnée dans l'exemple est intéressante. Exemple de bloc de code:
Calendar c1 = GregorianCalendar.getInstance();
c1.set(2000, 1, 30); //January 30th 2000
Date sDate = c1.getTime();
System.out.println(sDate);
Et sortie Wed Mar 01 19:32:21 JST 2000
.
Quand j'ai lu l'exemple pour la première fois, je pense que la sortie est fausse mais c'est vrai:)
-
Calendar.Month
commence à partir de 0 donc 1 signifie février. - Le dernier jour de février est le 28, la sortie devrait donc être le 2 mars.
- Mais l'année choisie est importante, c'est 2000, ce qui signifie le 29 février, donc le résultat devrait être le 1er mars.
6
Author: erhun, 2018-02-14 09:24:52