1

当我尝试解析 unix-timestamp 时,我在使用日期对象时遇到问题。

例子:

//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..

我试图解析字符串时间戳以将 int 转换为

var intUT = parseInt(unixTimestamp);

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

谢谢!

4

1 回答 1

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)。根据http://www.epochconverter.com它是Mon, 24 Sep 2012 19:15:00 GMT.

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

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

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

上面的代码将始终返回 19(格林威治标准时间),与浏览器/操作系统时区无关。

于 2012-09-24T13:57:12.400 回答