2017-10-20 1 views
0

Lorsque j'utilise un DateTimeFormatter (code ci-dessous) sur un LocalDate défini au 1er janvier 2017, je termine avec une valeur d'année erronée.L'utilisation de DateTimeFormatter le 1er janvier cause une valeur d'année invalide

LocalDate.of(2017,1,1).toString 

Cela correctement affiche 01/01/2017 tout

LocalDate.of(2017,1,1).format(DateTimeFormatter.ofPattern("dd MMM YYYY")) 

me donne: 01 janv. 2016. Avez-vous une idée de pourquoi cela se passe?

+6

Utilisez 'y' au lieu de' Y'. C'est l'année de la semaine. Voir [DateTimeFormatter] (https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html). Je suppose que @Robby utilise une autre locale où (dimanche est le premier jour de la semaine) – AxelH

+0

Merci @AxelH, c'était tout! –

Répondre

4

Vous utilisez la «mauvaise» année.

année de l'année 2004; 04

Y semaine de l'année 1996; 96

Source: DateTimeFormatter

Ce utilise basiquement le premier jour de la semaine en cours pour voir en quelle année il a été au lieu du jour même.

L'un des problèmes est que cela dépend de la locale ...