SimpleDateFormat 不可逆?
SimpleDateFormat not reversible?
以下代码在将数据转换为字符串并返回到 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。
知道这种巨大差异是从哪里来的吗?
你必须使用小写的 y 作为年份
因为大写的 Y 是星期年,小写的 y 是年。有关详细信息,请参阅 javadoc
String pattern = "ddMMMyy HH:mm";
以下代码在将数据转换为字符串并返回到 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。
知道这种巨大差异是从哪里来的吗?
你必须使用小写的 y 作为年份
因为大写的 Y 是星期年,小写的 y 是年。有关详细信息,请参阅 javadoc
String pattern = "ddMMMyy HH:mm";