如何为弹簧控制器选择正确的日期类型?

问题描述

我需要实现这样的端点:

@GetMapping("/localdatetime")
public SomeObhject dateTime(@RequestParam("localDateTime") LocalDateTime date) {

按日期它应该从数据库查询并返回给客户端。

我的问题是我应该使用哪种日期类型?

  • 本地日期时间
  • 分区日期时间
  • 偏移日期时间

还有什么?

有哪些优点和缺点?

AFAIK 传递日期的最佳方式 - 以 UTC 格式传递它,但它不直接回答我的问题。

解决方法

LocalDateTime 不保留时区信息,因此如果不提供额外的信息 - 时区,就无法转换为准确的时刻。 OffsetDateTime 和 ZonedDatetime 都包含时区信息, ZonedDatetime 包含更多信息,请在 Javadoc 中阅读。如果您的应用程序不需要考虑时区(例如,它是一个用于本地化使用的应用程序,并且所有时间都假定总是在本地时区),那么使用 LocalDateTime 比其他人更简单,而其他人会保留一些冗余信息。但是,如果您确实需要考虑时区,那么您需要保存此信息的两个之一。如果我需要考虑时区,我个人更喜欢使用 ZonedDatetime

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...