Javascript日期时区字符串意外更改

时间:2018-05-08 15:38:41

标签: javascript date timezone

我最近在测试版频道上更新了Chrome 67.0.3396.30,我注意到新的Date()。toString()现在返回一个更长的字符串(例如"英国夏令时"直到Chrome 66的时区返回为3个字符的字母代码(例如" BST")。

当我意识到3位数代码远非独一无二时,它们非常便于显示当前时区,当屏幕空间受限于小型设备(即手机)时,几乎所有用户都会明白时区代码表示可能存在冲突的地方。

我希望我们再也无法获得三个字符代码了,所以我希望我必须添加一个转换表。任何人都可以向我指出一整套可能的回应。转换表也很棒。

特别是我以时区字符串和代码表的形式回答,而不是外部javascript库。

1 个答案:

答案 0 :(得分:0)

在我看来,没有这样的清单。此外,因为在ECMAScript规范中说它是依赖于实现的:

  

返回一个依赖于实现的String值,该值使用方便的,可读的形式将tv表示为当前时区中的日期和时间。

https://www.ecma-international.org/ecma-262/6.0/#sec-todatestring

或2019年版:

  

让tzName是一个实现定义的字符串,它是空字符串或代码单元0x0020(SPACE)的字符串连接,代码单元0x0028(LEFT PARENTHESIS),依赖于实现的时区名称和代码单位0x0029(右父母)。

https://tc39.github.io/ecma262/#sec-timezoneestring

在我看来,您可能希望使用某些库在所有浏览器上获得可预测的结果。