gpt4 book ai didi

java - 如何在最初给定的时区中存储和显示日期?

转载 作者:搜寻专家 更新时间:2023-11-01 02:25:19 24 4
gpt4 key购买 nike

我有一台服务器正在从不同时区的客户端接收数据。数据提要包含人物、他们的出生日期和其他事件日期。出于我们的目的,如果我们可以将日期存储为他们提供给我们的日期,那将很方便。

例如,如果客户在加利福尼亚,它告诉我们此人的出生日期是 5 月 31 日,我们希望将其存储在数据库中,时间为太平洋时间 1999 年 5 月 31 日。这样,无论您在哪个时区,都可以看到此人出生于 5 月 31 日。

与此同时,我们希望能够查询这些数据,以便能够弄清楚诸如“此人是否未成年人”或“此事件是否发生在 24 小时前?”之类的事情?

客户端通过基于 http 的 rest API 向我们发送数据。服务器是用 Java 编写的(使用 eclipselink)。数据库是postgresql。是否有可能满足这些要求?

通常,人们会说将所有内容存储为 UTC,但我觉得这不是一个好主意,因为我们会丢失原始数据的时区。

最佳答案

UTC 是要走的路。对于timestamptz(带时区的时间戳),输入值的时区仅作为Postgres内部计算UTC的修饰符。 (对于 timestamp [without time zone],任何附加的时区都将被忽略!)。不保存时区。您需要另外保存它以了解世界上哪里发生了什么事。

如果这样做,您还不如存储本地时间戳。只是不要混淆哪个是哪个。要么将所有内容转换为 UTC(timestamptz 自动发生),要么将所有内容转换为本地时间(定义“本地”:您的本地时间?本地到数据库服务器?本地到用户?)。

特别是,存储准确的时区名称(或对它的引用)而不只是“太平洋时间”。这对于夏令时、闰秒或其他事件更为精确。

详细解释:

关于时区名称和缩写:

关于时区处理:

关于java - 如何在最初给定的时区中存储和显示日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25294648/

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