8

为什么这段代码会抛出无法解析的日期异常?

SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.000Z'");
f.setLenient(false);
String dateStr = "2012-03-11T02:46:01.000Z";
f.parse(dateStr);

当 lenient 为真时,它工作正常。它奇怪地适用于输入日期' 2012-03-01T02:46:01.000Z ',即使 lenient 为假。使用的默认时区:PST

4

1 回答 1

10

因为您的默认时区中不存在该时间 - 这是夏令时更改日,时间从凌晨 2:00 跳到凌晨 3:00,所以那天早上没有 2:46。:P

由于您正在解析 UTC,请将SimpleDateFormat实例时区设置为 UTC,如下所示:

f.setTimeZone(TimeZone.getTimeZone("UTC"));

你的问题就会消失。

于 2013-01-29T01:38:06.993 回答