Java 24小时字符串到ZoneDateTime

Java 24小时字符串到ZoneDateTime,java,parsing,datetime,Java,Parsing,Datetime,我想将24小时字符串ex:13:05 2017-03-19转换为ZoneDateTime。目前我正尝试这样做: DateTimeFormatter zoneParser = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); this.startZoneTime = LocalDateTime.parse(date + " " +start, zoneParser).atZone(ZoneId.systemDefault()); this.en

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

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());

但是得到一个解析异常。

13:05 2017-03-19
的模式为
HH:mm yyyy-mm-dd
,而不是您使用的
yyy-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());
我的时区中的输出:

Start 2017-03-19T13:05+01:00[Europe/Copenhagen]
End   2017-03-19T15:25+01:00[Europe/Copenhagen]

不需要显式格式化程序。

1。该模式与您的示例/2不符。什么是“开始”、“结束”?为了清晰和简单,我将分别解析三个字符串,
date
start
end
,然后组合成两个
LocalDateTime
对象。当然,最后转换成
ZoneDateTime
。正如@azro可能暗示的那样,这一点并不清楚。如果您愿意,我们可以更好、更准确地帮助您解决问题。还记得包括stacktrace。我对信息的缺乏感到非常抱歉,我完全匆忙地发布了这个问题,忘记了更改变量名,以便它们更好地代表我试图实现的目标“开始”和“结束”是开始时间和结束时间。就像一个符咒。我想我先是想把它转换成12小时的时间,然后再转换成zoneDateTime,因为我认为它不会转换成其他时间。非常感谢你的帮助@BrijPatel没问题,很乐意帮忙!
Start 2017-03-19T13:05+01:00[Europe/Copenhagen]
End   2017-03-19T15:25+01:00[Europe/Copenhagen]