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.
2 réponses
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.
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.
Questions connexes
De nouvelles questions
java
Java est un langage de programmation de haut niveau. Utilisez cette balise lorsque vous rencontrez des problèmes pour utiliser ou comprendre la langue elle-même. Cette balise est rarement utilisée seule et est le plus souvent utilisée en conjonction avec [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] et [maven].