从日期对象减去一天的 toJSON 函数

Eoi*_*rst 1 javascript date

我正在使用Date对象在 javascript 中进行一些日期操作。我花了.toJSON()大约一个小时来理解一个错误:在初始化之后,我使用了函数,我的日期减一。这是我正在做的代码示例:

var date = new Date();
console.log(date.getDate()); // print "19"
date.setDate(date.getDate()-1); // print "18"
var formated = date.toJSON().substr(0, 10); // print "2013-09-17"
Run Code Online (Sandbox Code Playgroud)

突然,日期从 18 日变成了 17 日。所以可以肯定的是,我直接在开发人员控制台中尝试了这个:

new Date(2013, 09, 19)
Sat Oct 19 2013 00:00:00 GMT+0200 (Paris, Madrid (heure d’été)) // date "19" as it should
new Date(2013, 09, 19).toJSON()
"2013-10-18T22:00:00.000Z" // date "18" as it shouldn't
Run Code Online (Sandbox Code Playgroud)

现在我的问题只是“为什么?”。

这可能来自我的配置还是其他?

这是一个错误吗?如果是,它是一个已知的错误吗?

Cyr*_* N. 5

如果你仔细看:

new Date(2013, 09, 19);
=> Sat Oct 19 2013 00:00:00 GMT+0200 (CEST)
Run Code Online (Sandbox Code Playgroud)

这里有两件事很重要:

  1. 小时 : 00:00:00
  2. 时区: +0200

当您调用 时.toJSON,它会在 GMT + 0 中进行转换。

所以00:00:00 - 2hr= Today -1, hour being 22:00:00

现在来看看:

new Date(2013, 09, 19).toJSON()
=> "2013-10-18T22:00:00.000Z"
Run Code Online (Sandbox Code Playgroud)

前一天,但小时设置为 22:00:00

这就是原因:从 切换GMT+0200GMT+0

现在对于解决方案,有人已经问过了:Javascript Date.toJSON 不获取时区偏移量;)