希望使用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
参数。我是否缺少某些内容,还是真的没有办法获取语言环境格式的字符串以包含时区名称。
答案 0 :(得分:1)
完整兼容性矩阵为here,目前看起来像这样:
两个红色框表示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>
输出:
此外,您可以尝试根据需要修改代码。