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

如何在javascript中正确使用Date()用法?,javascript,Javascript,当我试图解析unix时间戳时,我在使用Date对象时遇到问题 例如: //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

当我试图解析unix时间戳时,我在使用Date对象时遇到问题

例如:

//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时间戳中获取正确的日期和时间


谢谢大家!

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

new Date(+"1348514100000")
给我2012年9月24日周一21:15:00 GMT+0200(CEST),其他人报告2012年9月24日周一14:15:00 GMT-0500(CDT)和
12:15:00 GMT-0700(PDT)
。据了解,时间是2012年9月24日星期一格林尼治标准时间19:15:00

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

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

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

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

您应该解释“错误”的含义,因为这正是您在JavaScript中使用
Date()
对象的方式。那么您期望的是什么呢?当我将该数字传递给
Date()
构造函数时,我得到了“Mon Sep 24 2012 14:15:00 GMT-0500(CDT)”,这在我看来是正确的。JavaScript将时间戳解释为通用时间值。然后它构造一个日期对象,反映浏览器的本地时间(或运行JavaScript的任何地方)。如果我在加利福尼亚,那应该是“12:15:00GMT-0700(PDT)”。啊——确保你传递的是数字而不是字符串!尝试
newdate(+unixTimestamp)
换句话说…格式化日期是另一个问题:-)JavaScript对日期格式化没有太多直接支持,但您可以通过日期对象上的各种“getter”函数(getFullYear()、getDate()、getMonth()等)自行构建。请注意,月份是从0到11的数字,而不是从1到12的数字!