SimpleDateFormat.parse() 返回格式 "YYYY/MMM/d" 的不正确日期



我不明白为什么解析后我收到其他日期:

Date date = new Date();
System.out.println(date);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY/MMM/d");
String dateString = simpleDateFormat.format(date);
System.out.println(dateString);
date = simpleDateFormat.parse(dateString);
System.out.println(date);

输出:

Tue Apr 09 12:18:35 AST 2019
2019/Apr/9
Mon Dec 31 12:00:00 AST 2018

如果将年份格式更正为

而不是

年年

事情会按预期工作

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MMM/d");

Java 7 引入了 YYYY 作为新的日期模式来标识日期周年。

你能不能把年份改成yyyy

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MMM/d");

这些是简单日期格式化程序的模式

G 时代指示符(基督之前,基督之后(y 年份(例如 12 或 2012(。使用 yy 或 yyyy。一年中的 M 月。M 的数量决定了格式的长度(例如 MM、MMM 或 MMMMM(d 月中的一天。d的数量决定了格式的长度(例如d或dd(h 一天中的小时,1-12(上午/下午((通常为hh(H 一天中的小时,0-23(通常为 HH(m 分钟以小时为单位,0-59(通常为毫米(s 秒分,0-59(通常为 ss(秒中的 S 毫秒,0-999(通常为 SSS(E 一周中的一天(例如星期一、星期二等(D 一年中的一天 (1-366(F 每月的星期几(例如 12 月的第一个星期四(w 一年中的一周 (1-53(W 月中的一周 (0-5(上午/下午标记k 一天中的小时数(1-24,与 HH 的 0-23 不同(K 一天中的小时,上午/下午 (0-11(z 时区' 文本分隔符的转义' 单引号

最新更新