SimpleDateFormat不可逆?

时间:2017-04-25 08:35:25

标签: date java-7

在将数据转换为字符串时,以下代码的行为不符合预期,并返回到java 7下的日期:

final long epochTime = 1489669024142L;
String pattern = "ddMMMYY HH:mm";
final SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.ENGLISH);
final Date inputDate = new Date(epochTime);
final String date1 = format.format(inputDate);
final Date date2 = format.parse(date1);

执行这个让我:

inputDate: Thu Mar 16 13:57:04 CET 2017
date1: 16Mar17 13:57
date2: Sun Jan 01 13:57:00 CET 2017

显然,这里有3个月的差异,而我预计会有4秒的差异。

我正在使用java.util.Date,并且无法使用JodaTime。

知道这个巨大差异来自哪里?

1 个答案:

答案 0 :(得分:1)

你必须使用小写y年份

因为大写Y是周年,小写y是年。有关更多信息,请参阅javadoc

String pattern = "ddMMMyy HH:mm";