如何在javascript中正确使用Date()?

时间:2012-09-24 13:43:50

标签: javascript

当我尝试解析unix-timestamp时,我在使用Date Object时遇到了问题。

示例:

//I am receiving json data that contains Unix-Timestamp like 1348514100000

var unixTimestamp = data.timestamp; //1348514100000
var date = new Date(unixTimestamp);
console.log(date.getDay()); // is wrong..

和示例2:

var unixTimestamp = data.timestamp; //1348514100000
var date = new Date();
date = date.setDate(unixTimestamp);
console.log(date.getDay()); // still wrong..

我试图解析string-timestamp以使用

转换int
var intUT = parseInt(unixTimestamp);

但仍然不是正确的日期和时间..我真的不知道该怎么做。如何从此unix时间戳中获取正确的日期和时间?

谢谢!

1 个答案:

答案 0 :(得分:3)

您的代码完全正常,唯一的问题可能是类型不正确。试试这个:

new Date(+"1348514100000")

给了我Mon Sep 24 2012 21:15:00 GMT+0200 (CEST),其他人报告了Mon Sep 24 2012 14:15:00 GMT-0500 (CDT)12:15:00 GMT-0700 (PDT)。根据{{​​3}},它是Mon, 24 Sep 2012 19:15:00 GMT

请注意,所有这些日期代表完全相同的时间点。时区差异(因此不同的小时)仅归因于愚蠢的Date.toString()实现(从Java语言复制的错误)。

处理此类日期的唯一可移植和内置方法是在纪元时间(毫秒)上运行或使用getUTC*()系列方法:

new Date(+"1348514100000").getUTCHours()

上述代码始终返回19(GMT时间),与浏览器/操作系统时区无关。