Sur java.time.format.DateTimeFormatterBuilder
:
/** Map of letters to fields. */
private static final Map<Character, TemporalField> FIELD_MAP = new HashMap<>();
static {
// SDF = SimpleDateFormat
// ...
FIELD_MAP.put('F', ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH); // SDF, LDML
// ...
}
Il montre que le symbole "F" peut avoir la même signification dans SimpleDateFormatter(SDF).
Dans le SDF, le symbole "F" signifie l'ordinal du jour de la semaine désigné, tel que "le deuxième dimanche de mai", la fête des mères (États-Unis).
Avec le SDF, je peux définir la fête des mères (US) en 2021 par "2021-05-2-Sun" avec le motif "yyyy-MM-F-EEE".
Mais tout motif comportant le symbole "F" avec DateTimeFormatter peut provoquer une DateTimeParseException.
J'ai trouvé un problème qui est déjà "résolu" :
[JDK-8169482]javadoc de java.time.DateTimeFormatter : F n'est pas semaine du mois
Mais cela n'a fait que "corriger" la javadoc ! ( ° ° ;)
Le symbole "F" est toujours avec un comportement non défini.
La description confuse dans le FSD "F : Jour de la semaine dans le mois" peut en être la raison.