首页 > 解决方案 > Java 24 小时字符串到 ZonedDateTime

问题描述

我想将 24 小时字符串 ex:13:05 2017-03-19转换为 ZonedDateTime。目前我正在尝试这样做:

DateTimeFormatter zoneParser = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
this.startZoneTime = LocalDateTime.parse(date + " " +start, zoneParser).atZone(ZoneId.systemDefault());
this.endZoneTime = LocalDateTime.parse(date + " " + end, zoneParser).atZone(ZoneId.systemDefault());

但是得到一个解析异常。

标签: javaparsingdatetime

解决方案


13:05 2017-03-19有一个模式HH:mm yyyy-MM-dd,而不是yyyy-MM-dd HH:mm:ss你使用的模式 - 所以如果你尝试将它与上面的代码一起使用,这将引发异常。该模式必须与您传入的字符串的格式相匹配。

我不知道date + " " + start您的问题中没有包含哪些参考资料,但是根据您的代码,以下内容应该可以毫无问题地运行:

    String date = "13:05 2017-03-19";
    DateTimeFormatter zoneParser = DateTimeFormatter.ofPattern("HH:mm yyyy-MM-dd");
    this.startZoneTime = LocalDateTime.parse(date, zoneParser).atZone(ZoneId.systemDefault());
    this.endZoneTime = LocalDateTime.parse(date, zoneParser).atZone(ZoneId.systemDefault());

推荐阅读