gpt4 book ai didi

JPA 和 java 8 日期 API - 选择正确的实现(Instant、LocalDateTime、ZonedDateTime)

转载 作者:行者123 更新时间:2023-12-04 13:52:59 24 4
gpt4 key购买 nike

在以下情况下,哪些可用的 Java 8 时间 API 类最适合 JPA 实体映射:

  • 契约(Contract)创建于信息类型
  • 日期以 UTC 格式存储在数据库中
  • 业务逻辑以 UTC 进行所有计算
  • 日期以欧洲/维也纳时区显示在 UI 中

我见过的大多数示例都使用 LocalDateTime,但那个示例没有任何时区概念。由于我们所有的业务逻辑都应该在 UTC 中进行计算并在 UTC 中检索/存储数据,InstantZonedDateTime 不是更合适吗?

在决定将哪种类型用于 JPA 实体映射时,应该考虑哪些实际影响(例如,无法将一周添加到 Instant)?

最佳答案

Instant 根据定义是 UTC,因此如果您总是处理 UTC,那么只要它具有您需要的所有操作就足够了。 LocalDateTime 是一个没有特定时区或时区偏移量的时间戳,但如果您知道您只处理 UTC,它可能对它提供的操作很有用 Instant不是。

OffsetDateTime 是可以携带明确时区偏移量的最精确类型,它允许您在 UTC 和其他时区之间来回转换时保留时间。有一个方便的 ZoneOffset.UTC 常量,您可以使用该常量将 UTC 的偏移量固定为 +0 小时。 ZonedDateTime 添加了 TimeZone 的概念,它增加了对夏令时等事物的支持,在处理 UTC 时通常不需要这个概念,除非你想显示特定地区的本地时间。

关于JPA 和 java 8 日期 API - 选择正确的实现(Instant、LocalDateTime、ZonedDateTime),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37573602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com