IE11的Date.prototype.toLocaleTimeString选项timeZoneName支持吗?

时间:2018-10-10 19:23:03

标签: javascript internet-explorer timezone

希望使用Date.prototype.toLocaleTimeString格式化Date对象,如下所示:

new Date().toLocaleTimeString('en', {hour: '2-digit', minute: '2-digit', second: '2-digit', timeZoneName: 'short'})

在Chrome和Firefox中,我得到的结果如下:

Chrome浏览器:"3:18:34 PM EDT"

Firefox:"3:19:17 PM EDT"

但是,在IE中,我得到的结果如下:

IE11:"03:19:54 PM"请注意缺少“ EDT”。

我看到here on MDN认为IE11对此功能完全支持options参数。我是否缺少某些内容,还是真的没有办法获取语言环境格式的字符串以包含时区名称。

2 个答案:

答案 0 :(得分:1)

完整兼容性矩阵为here,目前看起来像这样:

ECMAScript Intl Compatibility Table

两个红色框表示IE11不提供这种支持。

就我个人而言,我认为它不可能。如果您需要支持IE11,则必须通过一个库自带数据。 Moment-Timezone是一个这样的库,还有一个示例here关于如何以这种身份使用它。

答案 1 :(得分:1)

如果您仍想在IE 11中进行操作,则可以尝试参考以下工作。

它不是短格式。

<!DOCTYPE html>
<html>
<body>

<p>Click the button to display the time as a string.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
    var d = new Date();
    var rightNow = new Date();
    var TZ= String(String(rightNow).split("(")[1]).split(")")[0];
    var n = d.toLocaleTimeString('en', {hour: '2-digit', minute: '2-digit', second: '2-digit'});
	n += ' ' + TZ;
    document.getElementById("demo").innerHTML = n;



}
</script>

</body>
</html>

输出:

enter image description here

此外,您可以尝试根据需要修改代码。