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 のバグ417640および420269が原因であると思われます。

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

Dateこのバグは、MooTools の拡張機能が動作する方法 (日付を初期化し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 に答える