为什么这段代码会抛出无法解析日期的异常?
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 为 false。 使用的默认时区:太平洋标准时间
最佳答案
因为您的默认时区不存在该时间 - 这是夏令时更改日,时间从凌晨 2:00 跳到凌晨 3:00,因此当天早上没有 2:46。 :P
由于您正在解析 UTC,请将 SimpleDateFormat
实例时区设置为 UTC,如下所示:
f.setTimeZone(TimeZone.getTimeZone("UTC"));
你的问题就会消失。
关于java - 将 lenient 设置为 false 时的 SimpleDateFormat 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14574109/