1

我是否错误地实现了 setUTCMilliseconds?我输入的任何值的日期都不正确。这只是错误值的一个示例。我所有的测试数据在 JS 中解析到 5 月 24 日(从现在开始的未来),但在 C# 或使用快速在线转换工具中,我的 UTS MS 是正确的。

有什么想法吗?

function parseDate(epoch) {   
    var d = new Date();

    //tried this too, but it shows me the actual epoch 1970 date instead
    //var d = new Date(0);

    //EDIT: this should be seconds in combination with Date(0)
    d.setUTCMilliseconds(parseInt(epoch)); 

    return d.toString();
}

 // 1336423503 -> Should be Mon May 07 2012 13:45:03 GMT-7

 // javascript says
 Thu May 24 2012 05:03:21 GMT-0700 (Pacific Daylight Time) 
4

3 回答 3

2

从一个类似的问题:

var utcMilliseconds = 1234567890000;
var d = new Date(0); // The 0 there is the key, which sets the date to the epoch
d.setUTCMilliseconds(utcMilliseconds);

请参阅使用 javascript 将 UTC 纪元转换为本地日期

于 2012-05-09T00:58:27.050 回答
1

要将 UTC 时间(以秒为单位)转换为本地日期对象:

function makeUTC(secs) {
  return new Date(Date.UTC(1970,0,1,0,0, secs, 0));
}

请注意,时代是 1970-01-01T00:00:00.0Z

于 2012-05-09T01:19:24.310 回答
1

只需使用Date()毫秒作为数字的构造函数:

> new Date(1336423503 * 1000)
2012-05-07T20:45:03.000

之后无需创建 Date 对象和 setUTCMilliseconds。

于 2012-05-09T02:30:59.787 回答