Java:ZonedDateTime - 解析没有时区的时间字符串

chr*_*s01 6 java zoneddatetime

我有一个没有指定时区的日期时间字符串。但我想用 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"));
Run Code Online (Sandbox Code Playgroud)

有没有办法可以直接用 ZonedDateTime 解析它?

我试过这个,但它不起作用。

mytime = mytime.withZoneSameInstant(ZoneId.of("UTC")).parse(str,dtf);
Run Code Online (Sandbox Code Playgroud)

Ole*_*.V. 10

您可以在格式化程序上指定默认时区:

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmm")
            .withZone(ZoneId.of("UTC"));
    String tmstr = "201810110907";
    ZonedDateTime mytime = ZonedDateTime.parse(tmstr, dtf);
    System.out.println(mytime);
Run Code Online (Sandbox Code Playgroud)

输出:

2018-10-11T09:07Z[UTC]

额外提示:ZoneId.of("UTC")使用ZoneOffset.UTC. 如果您接受打印的输出2018-10-11T09:07ZZ表示 UTC)。