我将如何在应用程序中添加对时区的支持



我们目前正在数据库中存储太平洋/夏威夷的本地数据。假设我无法将这些日期更改为UTC,我需要添加哪些信息来支持时区?

我的想法是:

  • 首先,添加一个时区字段,以指示用户要查看的时区。(用户将从下拉列表中选择此
  • 第二,添加时区字段以指示数据库中当前数据库值的时区(太平洋/夏威夷)。
  • 第三,添加偏移以覆盖DST小时

因此,从美国/los_angeles的用户说,它会从数据库中拉出数据库,附加偏移量并应用夏威夷的时区,然后再将其转换为洛杉矶时间。对于任何计算或比较,我将首先将夏威夷时间转换为UTC,然后将UTC结果转换为洛杉矶。我是否缺少什么?

您的问题非常广泛,并且在不了解您的应用程序,平台,如何使用收集日期和时间,它们代表的内容等的情况下,我只能以一般性的方式讲话。

  • 建议在UTC中存储,但这仅按照惯例。主要的必需品是您存储数据的时区没有DST(夏威夷以来自1947年以来一直没有),并且您不是依靠计算机的操作系统或环境设置来确定使用什么时区。您可以使用夏威夷时区。请确保您在某个地方记录它!对于应用程序生命周期中的任何其他人来说,这肯定会令人惊讶。

  • 虽然它会狼,但这样做绝对没有任何优势。当您推出这些更改并使用UTC前进时,您可以轻松地将数据转换为UTC。(那将是首选的方法。)

  • 夏威夷的IANA时区ID是"Pacific/Honolulu"。如果您在Windows/.NET上,则TimeZoneInfo ID为"Hawaiian Standard Time"。无论哪种方式,它们都必须以这种方式拼写,套管和点点。

  • 确保您了解时区偏移和时区是两个不同的概念。虽然夏威夷可能使用-10:00的固定偏移,但在大多数时区都无法保证。请阅读时区标签Wiki以获取更多详细信息。

  • 您可能不应该尝试实现自己的时区逻辑。几乎每种语言都有库。查看适合您平台的内容。(如果您提供详细信息,我可以提供建议。)

这将是一个更强大的解决方案,将时间储存为UTC时间,因为UTC时间为时区是显示数据的特定PC的本地解决方案。在您的情况下,如果您存储了时间加上偏移,如何确定要存储哪个偏移量?如果涉及多个时区,则不是可行的解决方案。

相关内容

  • 没有找到相关文章

最新更新