我们目前正在数据库中存储Pacific / Hawaii的本地日期时间。假设我无法将这些日期更改为UTC,我需要添加哪些信息才能支持时区?
我的想法是:
所以说来自America / Los_Angeles的用户查看该网站,它会从数据库中提取日期时间,附加偏移并应用夏威夷的时区,然后再将其转换为洛杉矶时间。对于任何计算或比较,我会先将夏威夷时间转换为UTC,然后将UTC结果转换为洛杉矶。我错过了什么吗?
答案 0 :(得分:0)
将时间存储为UTC时间将是一个更强大的解决方案,因为时区对于显示数据的特定PC是本地的。在您的情况下,如果您存储时间加偏移量,您如何决定存储哪个偏移量?如果涉及多个时区,则不是一个可行的解决方案。
答案 1 :(得分:0)
您的问题非常广泛,如果不了解您的应用程序,平台,您如何使用收集日期和时间,它们代表什么等等,我只能说一般性。
建议以UTC格式存储,但这只是按照惯例。主要的必需品是您存储数据的时区没有DST(夏威夷自1947年以来没有),而您不依赖于计算机的操作系统或环境设置来确定什么时区使用。如果必须,您可以使用夏威夷时区。一定要把它记录在某个地方!在应用程序的生命周期中出现的任何其他人肯定会感到惊讶。
虽然它会萎缩,但这样做绝对没有优势。在推出这些更改并使用UTC时,您可以轻松地将数据转换为UTC。 (这将是首选方法。)
夏威夷的IANA时区ID为"Pacific/Honolulu"
。如果您使用的是Windows / .Net,则TimeZoneInfo
ID为"Hawaiian Standard Time"
。无论哪种方式,它们都必须以这种方式拼写,装箱和打断。
确保您了解时区偏移和时区是两个不同的概念。虽然夏威夷可能使用-10:00的固定偏移量,但大多数时区都不能保证这一点。请阅读timezone tag wiki了解更多详情。
您可能不应该尝试实现自己的时区逻辑。几乎每种语言都有这样的库。看看什么适合您的平台。 (如果您提供详细信息,我可以提供建议。)