我想将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());
但是得到一个解析异常。
答案 0 :(得分:2)
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());
答案 1 :(得分:1)
ZoneId zone = ZoneId.systemDefault();
String dateString = "2017-03-19";
String startTimeString = "13:05";
String endTimeString = "15:25";
LocalDate date = LocalDate.parse(dateString);
ZonedDateTime startDateTime = date.atTime(LocalTime.parse(startTimeString)).atZone(zone);
ZonedDateTime endDateTime = date.atTime(LocalTime.parse(endTimeString)).atZone(zone);
System.out.println("Start " + startDateTime);
System.out.println("End " + endDateTime);
我的时区输出:
Start 2017-03-19T13:05+01:00[Europe/Copenhagen]
End 2017-03-19T15:25+01:00[Europe/Copenhagen]
不需要明确的格式化程序。