如何在存储日期和时间的应用程序中处理多个TimeZones?

Nat*_*ate 4 mysql sql-server oracle timezone database-design

我意识到这有点主观,但是我希望在这里选择大家如何处理多个时区?这里有各种类似的问题和各种各样的接受答案.

怎么会有这种衣食住行中的应用程序,你已经建立,并且你必须克服哪些问题?

kub*_*003 13

您始终将日期/时间存储在一个时区(10个中的9个,即伦敦时间),并将其显示转换为您的用户的时区.这是严格的应用程序级问题而不是db.

  • 在一年中的大部分时间伦敦时间与UTC不同(当英国夏令时(BST)生效时).最好坚持使用UTC! (6认同)
  • 更准确地说,"伦敦时间"通常被称为UTC(通用协调时间,以前称为GMT或格林威治标准时间). (3认同)

Esc*_*alo 11

在工作中,我们同时管理多个时钟,不仅是时区,还有一些用于航天器导航的深奥时钟.

唯一真正重要的是:你只需要一个时钟和一个时钟,无论你选择哪一个,并且你有一个适当的时钟转换,当你需要一个时钟视图时,你的时钟不同于一个时钟而且只有一个时钟.

所以:

唯一一个时钟:选择最简单的一个可以解决你的问题,很可能这将是UTC(有些人会 - 不正确地称为格林威治,但重点仍然是:零线).

适当的时钟转换:这取决于您的应用程序,但您需要询问并回答以下两个问题:我需要多少分辨率?我是否需要确保我占用闰秒?一旦你回答,你可以选择标准库或更多的estoreric库.同样,你必须问这些问题.

时间观点:当有人选择时间视图(比如太平洋时间)时,只需按需调用适当的时钟转换.

真的,就是这样.

至于图书馆,我使用Python进行脚本编写,但使用NAIF Spice Library进行任务设计,并使用内部代码进行航天器导航.它们之间的区别仅仅在于考虑到所需的一切(地球自转,相对论,时间膨胀,闰秒等)的分辨率和可靠性.当然,您将选择适合您需求的库.

祝好运.

编辑:

我忘了提到:不要试图实施自己的时间管理库 - 使用搁置一个.如果您尝试,您可能会成功,但您的真实项目将会死亡,您将只有一个平均日期时间库来显示它.也许我被夸大了,但是制作一个可靠的通用日期时间库远非微不足道,即它本身就是一个项目.