2

以下のJSがあり、バックエンドスクリプトからユーザーが入力できる最大の日付を取得します。

var max_date = new Date(pdate + " " + ptime);

ここで、pdateとptimeはスクリプトからフェッチされます。

ここで、最小日付をmax_dateより1か月少ない値に設定する必要があります

if (max_date.getMonth() == 0)
subtractyear = 1;
var min_date = new Date(Date.UTC(max_date.getFullYear() - subtractyear,max_date.getMonth() - 1,max_date.getDate(),max_date.getHours(),0,0));

私の問題は、max_dateが3月31日の場合、min_dateは2月28日または2月29日または2月31日または2月30日にロールオーバーされるということです。

形成された日付が間違った日付である場合-たとえば2月30日、これを修正するにはどうすればよいですか?

4

1 に答える 1

7

月を1で単純化すると、有効な日付が取得されます。setMonthメソッドが無効なオブジェクト( 、およびコンストラクターとDate同じ)を返すことはありません。setDatesetYearDate

var date = new Date(2012, 02, 31); // 2012-03-31
date.setMonth(date.getMonth() - 1); // This gets 2012-03-02

何を期待していたのか、前月の最終日なのか、それとも1か月前の日なのかよくわかりません。

于 2012-08-14T09:24:41.947 に答える