使用ISO8601日期字符串初始化JavaScriptDate会产生日期值-1天


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

输出:

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

哪一天是-1天,Date为什么会有这种行为?

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

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

您需要指定时区来获得您想要的输出。

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

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

如果你想打印UTC时间,你应该使用

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

相关内容

  • 没有找到相关文章

最新更新