我有一个输入数据流,其中包含格式为“yyyy-MM-dd hh:mm:ss z”的日期,其中在进一步传播日期时需要保留时区。下面是测试程序(带有错误堆栈) - 我的解决方案有什么问题?
public class Test {
public static void main(String[] args) {
try {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss z");
ZonedDateTime zdt = ZonedDateTime.parse("2016-12-09 09:30:21 UTC", dtf);
System.out.println(zdt);
} catch (Exception e) {
System.err.println("Exception in 1st approach: " + e.getMessage());
}
try {
DateTimeFormatter dtf = new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd hh:mm:ss z").toFormatter();
ZonedDateTime zdt = ZonedDateTime.parse("2016-12-09 09:30:21 UTC", dtf);
System.out.println(zdt);
} catch (Exception e) {
System.err.println("Exception in 2nd approach: " + e.getMessage());
}
}
}
输出(异常消息):
第一种方法中的异常:无法解析文本“2016-12-09 09:30:21 UTC”:无法从 TemporalAccessor 获取 ZonedDateTime:{HourOfAmPm=9, MinuteOfHour=30, MicroOfSecond=0, SecondOfMinute=21, NanoOfSecond= 0, MilliOfSecond=0},ISO,UTC 解析为 java.time.format.Parsed 类型的 2016-12-09
第二种方法中的异常:无法解析文本“2016-12-09 09:30:21 UTC”:无法从 TemporalAccessor 获取 ZonedDateTime:{HourOfAmPm=9, MinuteOfHour=30, MicroOfSecond=0, SecondOfMinute=21, NanoOfSecond= 0, MilliOfSecond=0},ISO,UTC 解析为 java.time.format.Parsed 类型的 2016-12-09
JDK 版本 1.8.0_111
我已阅读 zoneddatetime 标签中的类似问题,但找不到该问题的解决方案。