当前位置: 首页 > 面试题库 >

Java,Hibernate,MySQL-存储UTC日期时间

云项禹
2023-03-14
问题内容

我在这里看到了一些相关的问题……本质上,我想要的是将日期时间存储为UTC,并让应用程序用户选择他想显示日期的时区-time in。
由于似乎日期时间字段受基础JDBC驱动程序的影响,所以我想知道这是否是存储UTC日期时间的可接受方法:

  • 将MySQL和Application Server计算机都设置为UTC时区(无需分开)
  • MySQL和JVM都应该选择基础系统时间设置(如果没有其他说明的话)
  • DATETIME在MySQL端使用表列
  • 使用java.util.Date如Hibernate的侧面相应的映射(我想java.sql.Timestamp可能也使用)
  • 让应用程序担心解释日期时间字段-即让用户选择首选时区

这个可以吗?

编辑
要澄清-
这里我的意思是指严格在服务器上创建的时间戳(例如,记录创建的日期时间)。因此,应用程序服务器实例化Date对象(新的Date()等于服务器上的当前日期时间,这实际上与时区无关)。
现在,如果客户用户希望提供一些日期以进行搜索/过滤,那么应该在这里进行从客户本地时间到UTC的转换,恕我直言…


问题答案:

我建议另一种简单的方法,该方法与计算机时区设置无关。

  • 代替设置服务器计算机的时区,而是设置JVM的时区。这可以通过系统属性来完成。在Windows上的示例如下
set JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=GMT
  • 对于MySQL,这里是执行此操作的参考。
  • 现在,这可以确保您所有的日期时间都在格林尼治标准时间
  • 保持时区为可配置属性,也可以取决于用户。因此,如果用户属于不同的地理位置,则可以为每个用户存储时区。
  • 每当需要日期时,从数据库中选择日期后,请应用时区以获取正确的时间。
  • 这种方法的优点是,它适用于所有时区用户。这意味着用户将按照他们的时区看到正确的时间。


 类似资料:
  • 问题内容: 我所读到的有关将时间转换为用户时区的所有信息都说,最好的方法是在UTC中存储日期和时间,然后将用户的时区偏移量添加到该时间。 如何以UTC时间存储日期?我使用MySQL DATETIME字段。 当在我的PHP代码中向MySQL添加新记录时,我将用于插入MySQL DATETIME。 我需要使用不同于存储UTC时间的其他方法吗? 问题答案: MySQL: 以’YYYY-MM-DD HH:

  • 我有一个移动应用程序和Rest服务。移动应用程序将生成并向web服务提供UTC日期、时间和时区。我需要使用PHP将这两个值存储到mysql中。 我是从远程源获取日期时间的,所以我不能使用MySQL的UTC_TIMESTAMP()来生成“当前”utc时间。 INSERT语句如何存储$CREATE,as is(UTC)而不将其存储为服务器的默认时区? 我是否必须在PHP中将它从UTC转换为我的服务器的

  • 问题内容: 如何配置JPA /hibernate模式以UTC(GMT)时区在数据库中存储日期/时间?考虑以下带注释的JPA实体: 如果日期是太平洋标准时间(PST)2018-Feb-03 9:30 am,那么我希望数据库中存储2008-Feb-03 5:30 pm的UTC时间。同样,从数据库中检索日期时,我希望将其解释为UTC。因此,在这种情况下,530pm是UTC 530pm。显示时,它将被格式

  • 问题内容: 如何配置JPA /hibernate模式以UTC(GMT)时区在数据库中存储日期/时间?考虑以下带注释的JPA实体: 如果日期为太平洋标准时间(PST)2008-Feb-03 9:30 am,那么我希望数据库中存储2008-Feb-03 5:30 pm的UTC时间。同样,从数据库中检索日期时,我希望将其解释为UTC。因此,在这种情况下530pm是UTC 530pm。显示时,它将被格式化

  • 问题内容: 在MySQL中,我讨厌将列和(分别是用于创建和最后修改的日期时间戳)添加到数据库中的所有表中。 每当我或数据库时,我都必须使用关键字。这遍了我的坚持。 有没有一种有效的替代方法,MySQL可以至少自动存储所插入行的数据时间并让我对其进行检索? 问题答案: 您可以使用DEFAULT约束来设置时间戳: 这样,您就不必在INSERT / UPDATE语句中指定。 参考:TIMESTAMP属性

  • 这是我的Firebase结构 我想在每个用户的第二个名字下面的“预订”下存储一天中的日期和时间,然后选择一天中的日期和时间。 这是我到目前为止用错误的方法得到的结果。它在名为“MyBookings”的单独子节点下设置日期 基本上,我所做的是单击一个显示日期和时间选择器的EditText,我需要将该日期存储在Firebase实时数据库中。 这是我的Firebase参考,我知道它是错误的,但不知道如何