java - Scala - 组合 LocalDate 和 LocalTime 时如何正确添加 ZoneOffset?

标签 java scala datetime time

我正在组合 LocalDate 和 LocalTime,并需要最终结果采用 UTC 格式。

我应该在组合 localDatelocalTime 之前将 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/

相关文章:

java - 在 Joda-Time 中,将 DateTime 设置为月初

java - android - 重置后按按钮上的进度条

java - Java中的RSA加密/PHP中的解密失败

scala - 如何依赖 GitHub 中的 PlayProject?

python - 计算(格式化)相同日期时,Pandas DatetimeIndex 和 to_datetime 存在差异

java - Calendar类如何计算月份?

Java RSA 到 PHP phpseclib RSA

scala - Spark 案例类 - 十进制类型编码器错误 "Cannot up cast from decimal"

斯卡拉玩 : How to inject test Database into Controller for testing

python - 关于仅在使用 pd.to_datetime 后保留日期信息