0
var date = new Date('2013-04-15');
console.log(date);

输出:

Sun Apr 14 2013 20:00:00 GMT-0400 (EDT)

即 -1 天,为什么 Date 会有这种行为?

4

3 回答 3

2

这两个时间戳代表相同的时间:

Sun Apr 14 2013 20:00:00 GMT-0400 (EDT)
Mon Apr 15 2013 00:00:00 UTC

你得到第一个,但期待第二个。日期构造函数似乎需要 UTC 时间。

如果你这样做:

var date = new Date('2013-04-15 EDT');
console.log(date);

然后你可能会得到预期的结果


编辑: 这种行为很奇怪。此代码按您的预期工作:

var date = new Date('Apr 15 2013');
console.log(date);

Mon Apr 15 2013 00:00:00 GMT+XYZ
于 2013-02-20T09:35:15.617 回答
1

您需要指定时区才能获得所需的输出。

这里有一个例子:Javascript 日期对象总是休息一天?

于 2013-02-20T09:36:50.620 回答
0

因为new Date()使用的是 UTC 时间,所以toString()使用您当前的时区。

如果要打印 UTC 时间,则应使用

var date = new Date('2013-04-15');
console.log(date.toUTCString());
于 2013-02-20T10:18:19.767 回答