Java: ZonedDateTime - 解析没有时区的时间字符串
Java: ZonedDateTime - parse timestring without timezone
我有一个没有指定时区的日期时间字符串。
但我想用 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);
您可以在格式化程序上指定默认时区:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmm")
.withZone(ZoneId.of("UTC"));
String tmstr = "201810110907";
ZonedDateTime mytime = ZonedDateTime.parse(tmstr, dtf);
System.out.println(mytime);
输出:
2018-10-11T09:07Z[UTC]
额外提示:使用 ZoneOffset.UTC
通常比 ZoneId.of("UTC")
更好。如果您接受打印为 2018-10-11T09:07Z
的输出(Z
表示 UTC)。
我有一个没有指定时区的日期时间字符串。 但我想用 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);
您可以在格式化程序上指定默认时区:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmm")
.withZone(ZoneId.of("UTC"));
String tmstr = "201810110907";
ZonedDateTime mytime = ZonedDateTime.parse(tmstr, dtf);
System.out.println(mytime);
输出:
2018-10-11T09:07Z[UTC]
额外提示:使用 ZoneOffset.UTC
通常比 ZoneId.of("UTC")
更好。如果您接受打印为 2018-10-11T09:07Z
的输出(Z
表示 UTC)。