简单日期格式在日期格式期间错误地向前滚动年份



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

我传入另一种格式以接收"周期"值,格式为 E d MMM YY。

下面,应该给我一个 31 年 12 月 18 日星期一的时间段。但是,它将返回 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 : 年

Y : 周年

你写了YY意思是周。 你需要年份,因此你需要写yy

如果您需要更多详细信息,可以在 SimpleDateFormat 类的文档中检查不同变量的所有含义。

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

最新更新