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
我目前正在使用 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