0

私は、JavaScriptを介して日付を取得する日付ピッカーを持っています。

var tmpEarTxt = document.getElementById('<%=txtEarDate.ClientID %>');

日付を 30 日増やすと、mozilla ブラウザーは結果として NaN-Nan-0NaN を返します。ただし、クロムでは正常に動作します。これが私のコードです:

var dtVal = new Date(tmpEarTxt.value);
dtVal.setDate(dtVal.getDate() + 30);

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

1 ~ 31 の範囲外の値は、 への引数としては無効Date#setDateです。代わりにDate#setTimeandを使用できます。Date#getTime

var TI_DAY = 1000*60*60*24; //convenience constant; use any notation you like
///
var dtVal = new Date(tmpEarTxt.value);
dtVal.setTime(dtVal.getTime() + 30 * TI_DAY);

また、正しい文字列を Date コンストラクターに渡すようにしてください。有効な形式のリストについては、Date.parseおよび参照されている仕様を参照してください

次の形式が許可されます。最初のものは ES1 以​​降で動作し、後者は ES5 以降でのみ動作します (2 行目と 5 行目は IE8 でテストされ、サポートされていません)。

Mon, 25 Dec 1995 13:30:00 GMT
1997-07-16T19:20:30.45+01:00
1997-07-16T19:20:30+01:00
1997-07-16T19:20+01:00
1997-07-16                    (year-month-day)
1997-07
1997

したがって、すべての場所でのみnew Date("25 Dec 1995")動作します(IE8、IE9、FF、Chrome で
new Date("1995-12-25")テスト済み) は、IE (IE8、IE9、FF、Chrome でテスト済み) を除くすべての場所で
new Date("12-25-1995")動作し、Chrome と IE では動作しますが、Firefox では動作しません。さらに、IE (ただし Chrome ではない) では、日と月の両方のオーバーフローが許可され、次に大きいメジャーがインクリメントされますが、最後の形式 (MDN によって承認されていない形式) を解析する場合に限られます年が 1900 年を下回ることさえあります。

于 2013-02-19T08:03:24.050 に答える