我正在组合 LocalDate 和 LocalTime,并需要最终结果采用 UTC 格式。
我应该在组合 localDate
和 localTime
之前将 ZoneOffset.UTC 添加到它们中,还是仅在创建 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
最佳答案
有很多方法可以做到这一点。
- 我首选的方式如下。我认为这很简单,而且没有什么意外。
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)
该列表并不详尽。以上所有内容都给出了相同的结果,并且与您问题中的代码的结果相同,即 UTC 日期和时间的 OffsetDateTime
。所以你可以做出选择。
关于java - Scala - 组合 LocalDate 和 LocalTime 时如何正确添加 ZoneOffset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58622824/