OffsetDateTime с разными смещениями в OffsetDateTime с UTC (Zulu)

В моей базе данных сохранены значения с разными смещениями, например.

`2018-03-26T03:00:00+03:00`
`2018-03-26T03:00:00+02:00`

Я хотел бы проанализировать их в значение base, которое должно быть смещено 0, чтобы упростить сравнение, но также оставить дату действительно удобочитаемой (это означает, что я хочу остаться со смещением вместо, например, мгновенного).

Как разобрать OffsetDateTime со смещением в +00 смещение (называемое UTC или ZULU) с правильной передачей даты (я имею в виду не только изменение 2 на 0, но и правильное вычисление даты и времени).


person degath    schedule 04.10.2019    source источник


Ответы (1)


Легко, когда знаешь как:

    String dateTimeFromDatabase = "2018-03-26T03:00:00+03:00";
    OffsetDateTime dateTime = OffsetDateTime.parse(dateTimeFromDatabase)
            .withOffsetSameInstant(ZoneOffset.UTC);
    System.out.println("With offset 0: " + dateTime);

Выход:

Со смещением 0: 2018-03-26T00:00Z

Я не понял, почему ты возражал против получения Instant. Он печатается как 2018-03-26T00:00:00Z. Единственная разница в том, что секунды включены, хотя их 00.

Ссылка: Документация OffsetDateTime.withOffsetSameInstant()

person Ole V.V.    schedule 05.10.2019