为什么此代码会抛出不可解析日期的异常?
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);
当宽松为真时,它工作正常。它特别适用于输入日期' 2012-03-01T02:46:01.000Z ',即使lenient为false。 使用的默认时区:PST
答案 0 :(得分:10)
因为您的默认时区中不存在该时间 - 它是夏令时更改日,并且时间从凌晨2:00跳到凌晨3:00,所以那天早上没有2:46。 :P
由于您正在解析UTC,请将SimpleDateFormat
实例时区设置为UTC,如下所示:
f.setTimeZone(TimeZone.getTimeZone("UTC"));
你的问题就会消失。