首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在UTC和本地时区中存储日期时间

如何在UTC和本地时区中存储日期时间
EN

Stack Overflow用户
提问于 2011-01-09 21:14:30
回答 3查看 9.8K关注 0票数 7

存储日期时间的实用方法是什么,这样我就可以让用户查看/查询自己的本地时间的数据,同时保留有关原始日期时间的信息。

基本上,用户希望能够查询(从他们自己的本地时间)从各个时区的系统收集的数据。但偶尔,他们想知道数据是在原始系统中的18:00创建的。当来自世界不同地区的用户就同一事件进行交流时,它会有所帮助。

代码语言:javascript
复制
User1: What? We don't have any data for 20:00
User2: Dude, it says 20:00 right there on my screen.
User1: Wait, what timezone are you? What's the UTC-time?
User2: What is UTC? Is that something with computers?
User1: OMFG! *click*

我正在寻找关于如何存储数据的建议。

我正在考虑将所有的日期时间存储在UTC中,并添加一个包含原始时区名称的额外列,该列的形式允许我使用mysql CONVERT_TZ或中的对应列。然后,应用程序将用户输入的日期转换为UTC,我可以轻松地查询数据库。所有日期也可以很容易地转换为应用程序中的用户本地时间。使用原始时区列,我还可以显示原始日期时间。

然而,这意味着,对于我的每一次约会,我需要一个额外的专栏.

代码语言:javascript
复制
start_time_utc datetime
start_time_tz  varchar(64)
end_time_utc   datetime
end_time_tz    varchar(64)

我在这里走得对吗?

与这些数据合作过的人会分享他们的经验吗?

(我将使用MySQL 5.5CE)

更新1

数据将在xml文件中传递,其中每个条目在某些本地时区中都有一个日期时间。因此,只有一个插入进程,运行在一个地方。

一旦加载到数据库中,它将在某些web应用程序中呈现给不同时区的用户。对于大多数用例,感兴趣的数据也来自与查看数据的用户相同的时区。对于一些更复杂的用例,一系列事件是相互关联的,跨越多个时区。因此,用户希望能够谈论事件,以便在对方的时间内调查可能的原因/后果。不是UTC,也不是他们自己的当地时间。

EN

回答 3

Stack Overflow用户

发布于 2013-01-20 07:16:51

由于用户可以生活在不同的时区,甚至可以从一个时区移到另一个时区,最佳做法是在UTC中存储日期和时间,并在显示时转换为用户的时区。

票数 6
EN

Stack Overflow用户

发布于 2011-01-10 15:11:10

手册中有一个关于时间戳的部分:

时间戳值从当前时区转换为UTC存储,并从UTC转换回当前时区进行检索。(这只发生在时间戳数据类型,而不是其他类型,如日期时间。)默认情况下,每个连接的当前时区是服务器的时间。时区可以在每个连接的基础上设置,如9.6节“MySQL服务器时区支持”中所述。只要时区设置保持不变,就会得到存储的相同值。如果存储时间戳值,然后更改时区并检索值,则检索的值与存储的值不同。这是因为在两个方向上都没有使用相同的时区进行转换。当前时区作为time_zone系统变量的值可用。

http://dev.mysql.com/doc/refman/5.5/en/timestamp.html

因此,您可以在客户机上使用:SET time_zone = timezone;来设置时区。然后所有查询都会将时间戳转换为正确的时区。不需要在Java中做任何复杂的事情,除了设置时区(我认为甚至可能是JDBC连接字符串中的一个参数)。

票数 4
EN

Stack Overflow用户

发布于 2011-09-28 16:46:21

你总是可以得到祖鲁时间作为你所有计算的基础。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4641852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档