Java:ZonedDateTime-解析不带时区的时间字符串

时间:2018-06-28 12:34:34

标签: java zoneddatetime

我有一个没有指定时区的datetime字符串。 但是我想用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);

1 个答案:

答案 0 :(得分:1)

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

    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]

奖金提示:使用ZoneId.of("UTC")通常比使用ZoneOffset.UTC更好。如果您接受将输出打印为2018-10-11T09:07ZZ表示UTC)。