在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
// ...
}
这表明符号“F”在 SimpleDateFormatter(SDF) 中可能具有相同的含义。
在 SDF 中,符号“F”表示指定星期几的序数,例如“五月的第二个星期日”、母亲节(美国)。
使用 SDF,我可以用模式“yyyy-MM-F-EEE”的“2021-05-2-Sun”来定义 2021 年的母亲节(美国)。
但是任何带有 DateTimeFormatter 符号“F”的模式都可能导致 DateTimeParseException。
我发现一个已经“修复”的问题:
[JDK-8169482]java.time.DateTimeFormatter javadoc: F is not week-of-month
但它只是“修复”了javadoc!Σ(っ °Д °;)っ<br /> 符号“F”仍然具有未定义的行为。
SDF“F:月中的星期几”中令人困惑的描述可能是原因。