【问题标题】:JSR310 when to use which classes?JSR310什么时候使用哪些类?
【发布时间】:2023-01-18 20:01:56
【问题描述】:

我想验证我对 JSR310 类用例的理解是否正确,在带有类的图表下方,以及我如何看待它们:

   Database (UTC)
       ||
       \/
  OffsetDateTime      (used in persistence or transmission, databases and XML)
       ||
       \/
    Instant            (used in business logic, for date time calculations)
       ||
       \/
   ZonedDateTime  <-- ZoneId  (used in presentation layer, requiring the client zoneId)
       ||
       \/
    LocalDateTime (used in presentation layer, obtained from ZonedDateTime)
       ||
       \/
     Front-end

我的不确定性与 ZonedDateTime 和 LocalDateTime 有关,因为据我所知两者都适用于表示层,尽管 LocalDatetime 没有时区或偏移量。

在 ZonedDateTime 处理了所有 DST 转换和异常之后,我应该发送到前端的 LocalDateTime 是什么?

我是否不将 ZonedDateTime 发送到前端,因为它有时区等额外信息?

提前致谢

【问题讨论】:

    标签: java-time jsr310


    【解决方案1】:

    SR310 是 java.time 包的 Java 规范,它提供了在 Java 中进行日期和时间操作的类。包中的主要类是:

    LocalDate:表示没有时间(年月日)的日期 LocalTime:表示没有日期的时间(小时、分钟、秒和纳秒) LocalDateTime:表示没有时区的日期和时间(结合 LocalDate 和 LocalTime) ZonedDateTime:表示带时区的日期和时间 Instant:代表一个时间点(类似于java.util.Date) 当您只需要表示日期时,您应该使用 LocalDate;当您只需要表示时间时,您应该使用 LocalTime;当您需要同时表示日期和时间但没有时区时,您应该使用 LocalDateTime;当您需要同时表示日期和时间时,您应该使用 ZonedDateTime 和Instant 当您需要表示一个时间点时。

    【讨论】:

    • 是的,通常客户不需要在前端看到 UTC 偏移量或时区。所以它认为本地人更适合这一层。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    相关资源
    最近更新 更多