我想根据用户的区域设置显示时区代码(例如BST或GMT)。但是,在每个浏览器中,它位于与新Date()。toLocaleString()不同的位置,在某些浏览器(例如Opera)上,它根本不可用。
看起来解决方案是根据时区偏移获得时区代码的数据库或结构,但可能有多个匹配(例如BST == GMT),我甚至找不到这样的列表。
这是否意味着无法完成?
答案 0 :(得分:1)
您必须手动定义代码中的时区差异。它很复杂,因为GMT时间与UTC(Zulu)时间不同。 GMT包括夏令时的变化,而UTC没有夏令时,否则是相同的时区表示。
另外一个困惑是,并非所有政治区域都定义了他们的时区,以一个小时为例。印度是UTC + 5.5小时,阿富汗UTC + 4.5小时。请注意,这是UTC,而不是GMT作为基准,因为这些国家不遵守夏令时。太平洋西南部的一些小岛屿国家可能在四分之一小时内有所不同。
然后,一些政治时区定义具有内部差异。亚利桑那州通常被认为是在美国太平洋时区,格林尼治标准时间 - 8小时,除了它没有观察到夏令时,所以半年它在美国山区时区,因为亚利桑那州真的是UTC - 8.
由于所有这些混乱,时区有数百个定义,其中一些定义随着政治边界的变化而变化。我只是说把它搞砸并使用用户的时钟时间或通过从服务器动态调整JavaScript中的常量来调整UTC时间,以反映表示用户请求页面时的UTC时间的已知值。