1

考虑使用最新的MooTools Core & More 1.5在 jsFiddle 中查看)的这个片段:

console.log(new Date().parse('2014-09-20 00:00:00'));

当我运行这段代码时,我通常会得到一些类似的东西

Sat Sep 20 2014 00:00:00 GMT+0200 (Central Europe Daylight Time)

但是,当我使用 Chrome (38.0.2125.104 m) 或 PyQt 4 WebKit 窗口使用俄罗斯时区(Windows 中任何RTZ名称中包含的)时,日期是未来 1 个月

Mon Oct 20 2014 00:00:00 GMT+0300 (Eastern Europe Daylight Time)

这显然不会发生在 Firefox 或 Internet Explorer 或任何非俄罗斯时区。

有人知道为什么吗?

4

1 回答 1

1

该问题显然是由 Chrome 错误417640420269引起的。

2014-01-01 00:00:00(包括)和(不包括)之间的日期2014-01-01 01:00:00根本不存在,它们改为2013-12-31 23:00:00- 2013-12-31 23:59:59

您可以使用 RTZ 重现此内容:

var d = new Date();

d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
d.setYear(2014);
d.setDate(1);

d.setMonth(0);
console.log(d.getMonth()); // Yields 11 rather than 0

这是因为时区问题导致日期部分的Date.parse('2014-01-01 00:00:00')产量2013-12-31

由于 MooToolsDate扩展的工作方式,此错误也会影响其他日期(使用year-01-01 00:00:00然后设置提取的值初始化日期,例如12:34:56 Sep 25, 2014将像这样派生:

2014-01-01 00:00:00 // Initialization
2013-12-31 23:00:00 // Resolved date with RTZ
2014-12-31 23:00:00 // Year
2014-09-31 23:00:00 // Month
2014-10-01 23:00:00 // Resolved date with overflow
2014-10-25 23:00:00 // Day of month
2014-10-25 12:34:56 // Time
于 2014-12-08T10:48:46.033 回答