SimpleDateFormat.parse()返回格式“ YYYY / MMM / d”的错误日期

时间:2019-04-09 09:24:41

标签: java date simpledateformat

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

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

2 个答案:

答案 0 :(得分:6)

如果将年份格式更正为

  

yyyy

代替

  

YYYY

事物将按预期运行

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

Java 7 introduced YYYY as a new date pattern to identify the date week year.

答案 1 :(得分:0)

可以将年份更改为yyyy

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

这些是simpleDateFormatter的模式

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