SimpleDateFormat 在日期格式期间错误地向前滚动一年

SimpleDateFormat incorrectly rolling year forward during format of Date

我目前正在使用 DateUtils class,它有助于跨系统格式化日期。 我有一个格式为 yyyyMMdd 的日期,它是从一个字符串中解析出来的。

我传入另一种格式以接收格式为 E d MMM YY 的 "period" 值。

下面应该给我 18 年 12 月 31 日星期一的时间。但是它返回 19 年 12 月 31 日星期一。为什么这一年向前滚动?

谢谢

final SimpleDateFormat dateFormat_E_d_MMM_YY = new SimpleDateFormat("E d MMM YY");
final SimpleDateFormat dateFormat_yyyyMMdd = new SimpleDateFormat("yyyyMMdd");
final Date date = dateFormat_yyyyMMdd.parse("20181231");
System.out.println(date);
System.out.println(dateFormat_E_d_MMM_YY.format(date));

你打错了 E d MMM yy 而不是 E d MMM YY

来自文档:

y : year

Y : Week year

你写的是YY,意思是星期。 你需要年份,因此你需要写 yy

如果您需要更多详细信息,可以在 SimpleDateFormat class.

的文档中查看不同变量的所有含义
y   Year            Year    1996; 96
Y   Week year       Year    2009; 09
M   Month in year   Month   July; Jul; 07
w   Week in year    Number  27
W   Week in month   Number  2
D   Day in year     Number  189
d   Day in month    Number  10