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

SimpleDateFormat with pattern yyyyMMddhhmmss unable to parse date "20160327020727"

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

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

它正在解析具有相同格式的其他日期并且按预期工作。为什么会这样?

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

尝试通过 df.setTimeZone(TimeZone.getTimeZone("UTC"));

将时区设置为 UTC

CET 三月的最后一个星期日变为夏令时 -> 当天凌晨 2 点。

CET三月的最后一个星期日改为夏令时,所以这一天没有凌晨 2 点。

你从 1:59 到 3:00

改成"yyyyMMdd HHmmss",方便解析。