使用toLocaleTimeString()显示从毫秒开始的时间

时间:2017-10-16 07:35:43

标签: javascript string date time locale

我试图用毫秒来显示时间。我使用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

获得预期结果

2 个答案:

答案 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() methodoptions对象作为第二个参数,您可以在其中指定几个选项,包括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