Java: ZonedDateTime - разбирать временную строку без часового пояса - PullRequest
0 голосов
/ 28 июня 2018

У меня есть строка даты-времени БЕЗ указанного часового пояса. Но я хочу проанализировать его с помощью 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 голосов
/ 28 июня 2018

Вы можете указать часовой пояс по умолчанию в форматере:

    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:07Z (Z означает UTC).

...