web-dev-qa-db-fra.com

Obtenir le nombre de semaines de LocalDate (Java 8)

J'essaie d'obtenir le numéro de semaine d'un LocalDate complet au format:

dd.MM.yyy

Je n'ai pas trouvé de fonction dans l'API Java 8 Date qui renvoie le numéro de semaine et j'ai essayé de créer un algorithme, mais cela n'a pas fonctionné.

25
YvesHendseth

Un petit avertissement. Je n'ai pas encore testé cela, mais en consultant la documentation API de WeekFields et LocalDate.get , vous devriez faire quelque chose comme:

LocalDate date = ...;
// Or use a specific locale, or configure your own rules
WeekFields weekFields = WeekFields.of(Locale.getDefault()); 
int weekNumber = date.get(weekFields.weekOfWeekBasedYear());
43
Mark Rotteveel

La réponse de Mark Rotteveel est presque juste et encore un exemple du type de potentiel de confusion qu'il y a dans la classe WeekFields (noms de méthodes de sondage similaires, mais s'écartant d'une utilisation civile intuitive). Le bon code nécessite un autre champ:

LocalDate date = LocalDate.now();
TemporalField woy = WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear(); 
int weekNumber = date.get(woy);

Voir aussi le débat similaire à ce sujet SO-post , en particulier la discussion et les commentaires sur la réponse de @kleopatra.

42
Meno Hochschild