1

現在の月から昨年の同じ月までの日付範囲をレンダリングするために使用する JavaScript コードの次のスニペットがあります。

var today = new Date();
var endDate = new Date(today.getFullYear(), today.getMonth(), 1);
var startDate = new Date(endDate.getYear() - 1, endDate.getMonth() - 1, 1);

IE 8 では、正しい日付範囲が表示されます。

金 6 月 1 日 00:00:00 MST 2012 - 月 7 月 1 日 00:00:00 MST 2013

Chrome で同じコードを実行すると、次の日付範囲が表示されます。

2013 年 6 月 1 日水曜日 00:00:00 MST - 2013 年 7 月 1 日月曜日 00:00:00 MST

開始日の年は 0112 です。IE と Chrome で正しい日付範囲を取得するにはどうすればよいですか?

4

2 に答える 2

5

IE と Chrome で正しい日付範囲を取得するにはどうすればよいですか?

getFullYear()と の両方endDateに使用startDate:

var startDate = new Date(endDate.getFullYear() - 1, endDate.getMonth() - 1, 1);

getYear()短い年を返すことを意図していた -96のために1996。ただし、その動作は、1900 年代以外の日付のブラウザ間で異なりました。

具体的には、IE 4 - 8getFullYear()は他の年を模倣します。

Internet Explorer 4.0 から Internet Explorer 8 標準モードでは、式は年によって異なります。1900 ~ 1999 年の場合、返される値は、格納された年から 1900 年を引いた 2 桁の値です。その範囲外の日付の場合、4 桁の年が返されます。たとえば、1996 は 96 として返されますが、1825 と 2025 はそのまま返されます。

IE9 は、Chrome で目にしている標準化された動作に戻りました(疑似コード):

getYear() == getFullYear() - 1900
于 2013-07-22T19:48:30.690 に答える