1

我整个早上都在摆弄 javascripts 时间戳。我通过运行不断得到无效的时间戳

today = (new Date()).setHours(0,0,0,0)或者today = (new Date()).getTime()

这 2 个输出13389300000001338978151748.

我认为这只是一个 chrome js 引擎错误,但用 Firefox 重现了它。这两条语句的预期输出是13389300001338977700

但是,我确实对此进行了修复。修复是这样的:

today = parseInt(((new Date()).setHours(0,0,0,0) * Math.pow(10, -3)).toFixed(0))

或没有 setHours()

today = parseInt(((new Date()) * Math.pow(10, -3)).toFixed(0))

这是一个常见的错误吗?我做错了什么来得到这些结果吗?时间戳的格式为时间戳 * 10^3。

编辑:

原来我期待的时间是秒(该死的 PHP),而 JAVASCRIPT 以毫秒为单位输出它。我正在使用 phpJS 日期/时间库,而 javasctipt 时间戳似乎与 strtotime() 和 date() 本身不兼容

我试图使用 unix 时间戳,以秒为单位。

4

3 回答 3

7

getTime()返回自 1970/01/01 以来的毫秒数,而不是秒数。

//milliseconds
var milliseconds = new Date().getTime();

//seconds
var seconds = new Date().getTime() / 1000;
于 2012-06-06T10:27:16.790 回答
1

这不是一个错误 - 您期望以秒为单位的时间戳(为什么?),而 javascript 提供毫秒精度的时间戳。

于 2012-06-06T10:27:34.250 回答
1

Unix 时间戳使用秒,但 Javascript 时间戳使用毫秒!这就是为什么你需要乘以 1000。

http://www.w3schools.com/jsref/jsref_utc.asp

UTC() 方法根据世界时返回指定日期和 1970 年 1 月 1 日午夜之间的毫秒数。

于 2012-06-06T10:31:40.613 回答