我试图用毫秒来显示时间。我使用toLocaleTimeString
,因为它支持区域设置。
var milliseconds = 10000;
var date = new Date(milliseconds);
console.log(date.toLocaleTimeString('en',milliseconds));
// expected result - 0:0:10 AM
// actual result - 5:30:10 AM

结果不是我所期望的。如何使用toLocaleTimeString
答案 0 :(得分:0)
var date = new Date(10000);
是UTC,即1970-01-01 00:00:10 UTC
date.toLocaleTimeString('en')
输出系统时区的时间,从而得出您找到的差异。
解决方法之一是通过添加时区差异(以毫秒为单位)将date
变量设置为系统时区,如下所示:
var date = new Date(10000 + new Date().getTimezoneOffset()*60000);
(new Date().getTimezoneOffset()
是分钟内的时区差异)
答案 1 :(得分:0)
.toLocaleTimeString()
方法的正常行为是根据您环境的local
时区以字符串形式显示时间,这就是为什么您有不同的原因结果
你在<:p>中传递了一个错误的参数milliseconds
date.toLocaleTimeString('en',milliseconds);
实际上Date.prototype.toLocaleTimeString() method将options
对象作为第二个参数,您可以在其中指定几个选项,包括timeZone
,指定输出所需的时区。
因此,请使用{"timeZone": "UTC"}
将其显示在UTC
中,如下所示:
date.toLocaleTimeString('en',{"timeZone": "UTC"})
<强>演示:强>
var milliseconds = 10000;
var date = new Date(milliseconds);
console.log(date.toLocaleTimeString('en',{"timeZone": "UTC"}));
// expected result - 0:0:10 AM
// actual result - 5:30:10 AM