Scala - как правильно добавить ZoneOffset при объединении LocalDate и LocalTime? - PullRequest
1 голос
/ 30 октября 2019

Я комбинирую LocalDate и LocalTime и мне нужен конечный результат в UTC.

Должен ли я добавить ZoneOffset.UTC в localDate и localTime перед их объединением или только при создании OffsetDateTime? Я пробовал разные подходы, но не вижу разницы.

val localDate: LocalDate = java.time.LocalDate.now(ZoneOffset.UTC) // Same as without Offset - 2019-10-30
val localTime: LocalTime = java.time.LocalTime.now(ZoneOffset.UTC) // Same as without Offset - 09:55:25.997

val localDateTimeWithZone: OffsetDateTime = LocalDateTime.of(localDate, localTime)
    .atZone(ZoneOffset.UTC).toOffsetDateTime

1 Ответ

2 голосов
/ 30 октября 2019

Есть много способов сделать это.

  • Мой предпочтительный способ заключается в следующем. Я думаю, что это просто и довольно свободно от неожиданностей.
    • OffsetDateTime.of(localDate, localTime, ZoneOffset.UTC)
  • Следующие опции также идеально подходят.
    • localDate.atTime(localTime).atOffset(ZoneOffset.UTC)
    • localTime.atDate(localDate).atOffset(ZoneOffset.UTC)
    • LocalDateTime.of(localDate, localTime).atOffset(ZoneOffset.UTC)
  • Я считаю следующие параметры более запутанными. Они тоже работают, но лично я бы ими не пользовался.
    • localTime.atOffset(ZoneOffset.UTC).atDate(localDate)
    • localDate.atTime(localTime.atOffset(ZoneOffset.UTC))
    • OffsetTime.of(localTime, ZoneOffset.UTC).atDate(localDate)

Список не исчерпывающий. Все вышеперечисленное дает тот же результат, а также тот же результат, что и код в вашем вопросе, OffsetDateTime вашей даты и времени в UTC. Так что вы можете сделать свой выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...