Je souhaite obtenir le jour ISO de la semaine à l'aide de l'API Calendar, mais elle renvoie le mauvais numéro de jour.

Le dimanche est le dernier jour de la semaine et doit être le numéro 7 de la norme ISO, le lundi étant le premier jour comme numéro 1.

Mais exécuter le code suivant pour un dimanche (30/07/2017) me renvoie le numéro 1 . Pourquoi l'API Calendar me renvoie-t-elle une valeur différente?

Calendar cal = Calendar.getInstance(Locale.US);
cal.set(Calendar.YEAR, 2017);
cal.set(Calendar.MONTH, Calendar.JULY);
cal.set(Calendar.DAY_OF_MONTH, 30);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);

System.out.println(dayOfWeek);

Le résultat est: 1

J'ai essayé d'utiliser Joda Time et cela a bien fonctionné, mais je dois le faire en utilisant Calendar et Java 6, donc utiliser une autre bibliothèque n'est pas une solution.

1
Evandro Pomatti 4 août 2017 à 18:03

2 réponses

Meilleure réponse

Les constantes int commencent par dimanche et se terminent par samedi.

Documenté dans java.util.Calendar JavaDoc pour Java 6.

Ma proposition est donc de le calculer vous-même.

1
Maia 7 août 2017 à 06:48

Vérifiez la Javadoc de Calendar pour java 6 avant de publier une question valeurs des constantes dans le calendrier

La valeur de Calendar.SUNDAY est 1 pour les paramètres régionaux américains.

0
Community 20 juin 2020 à 09:12