2

我正在尝试将 7 天添加到 Data 对象,但是在某个阶段我开始得到奇怪的结果。

var currDate = new Date(2011, 2, 28)
  , oldTicks = currDate.getTime()
  , newTicks = oldTicks + (86400000 * 7)
  , nextWeek = new Date(newTicks)
console.log('Old ticks: ' + oldTicks)
console.log('New ticks: ' + newTicks)
console.log('New date : ' + nextWeek)

我得到的输出,Chrome/FF 都是:

Old ticks: 1301230800000
New ticks: 1301835600000
log: New date : Sun Apr 03 2011 23:00:00 GMT+1000 (EST)

预计获得:

log: New date : Mon Apr 04 2011 23:00:00 GMT+1000 (EST)

如您所见,没有添加 7 天,而是仅添加了 6 天。但是,上面的代码适用于其他日期,例如 2011 年 4 月 28 日或 2011 年 5 月 28 日。

4

2 回答 2

5

据我推断,Crescent Fresh 是正确的。查找时区GMT+1000 (EST)看起来像澳大利亚东部标准时间 - 来自维基百科 - 按 UTC 偏移的时区列表

并且来自世界各地的维基百科-夏令时,显示澳大利亚在 OP 指定的日期范围之间从标准时间切换到夏令时。

于 2011-02-22T05:06:09.200 回答
1

如果是我,我会这样做:

var curDate = new Date(),

var aWeekLater = new Date(curDate.getFullYear(), curDate.getMonth(), curDate.getDate() + 7);

对一天中的时间进行一些可能的调整。

也就是说,当我在 Chrome 开发人员控制台中尝试您的代码时,我得到 04 Apr 作为答案。

于 2011-02-22T04:39:29.400 回答