【发布时间】:2018-12-07 13:08:51
【问题描述】:
我有一个没有指定时区的日期时间字符串。 但我想用 ZonedDateTime 解析它,以便在解析过程中赋予它一个时区含义。
此代码正在运行,但使用 LocalDateTime 进行解析 - 然后将其转换为 ZonedDateTime 并为其赋予时区含义。
DateTimeFormatter dtf = DateTimeFormatter.ofPattern ("yyyyMMddHHmm");
String tmstr = "201810110907";
LocalDateTime tmp = LocalDateTime.parse (tnstr,dtf);
ZonedDateTime mytime = ZonedDateTime.of (tmp, ZoneId.of ("UTC"));
有没有办法可以直接用 ZonedDateTime 解析它?
我试过了,但是没用。
mytime = mytime.withZoneSameInstant(ZoneId.of("UTC")).parse(str,dtf);
【问题讨论】:
-
您已经知道格式...是什么阻止了您将具有正确时区的字符串附加到原始日期字符串?
-
顺便说一下,我建议对您的数据发布者进行有关ISO 8601 格式的教育。您的问题中看到的格式接近于符合日期与时间标准格式的“基本”变体。要完全遵守,请在日期部分和时间部分之间插入
T:"20181011T0907"。更好地使用扩展变体,默认情况下也在 java.time 类中使用:"2018-10-11T09:07"。如果打算将带时间的日期视为 UTC,则通过在末尾附加Z来说明:"2018-10-11T09:07Z"。
标签: java zoneddatetime