具有模式yyyyMMddhhmmss的SimpleDateFormat无法解析日期“20160327020727”

时间:2016-08-19 15:18:06

标签: java date java-8 simpledateformat date-parsing

我在使用格式20160327020727解析日期yyyyMMddhhmmss时遇到异常。请注意,lenient设置为false。

    SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmss");
    df.setLenient(false);
    try {
        Date dt = df.parse("20160327020727");
    } catch (ParseException e) {
        e.printStackTrace();
    }

它使用相同的格式解析其他日期,并且按预期工作。为什么会这样?

2 个答案:

答案 0 :(得分:7)

CET夏令时改为3月的最后一个星期日,所以今天没有2AM。

你从1:59到3:00

答案 1 :(得分:2)

您收到错误,因为您的默认时区中不存在该时间。

尝试通过UTC

将时区设置为df.setTimeZone(TimeZone.getTimeZone("UTC"));

在3月的最后一个星期日CET,它变为夏季 - >那天没有2AM。