0

私はこのような2つのタイムスタンプを比較しようとします:

var nowDate = new Date();
var givenDate = new Date(parseInt(year), parseInt(month), parseInt(day), parseInt(hour), parseInt(minute), 0);
var nd_timestamp = nowDate.getTime();
var gd_timestamp = givenDate.getTime();

if (nd_timestamp > gd_timestamp) {
    alert("yes");   
}

しかし、それは正しく機能していません。nd_timestamp と gd_timestamp を見ると、すべて問題ないように見えますが、if 句が機能していません。parseInt(year)... を削除して Date(2012, 04, 20, 0, 0, 0) と入力すると、if 句が機能します。

年、月などの変数は関数を介して取得されますが、アラート(年)などでデバッグすると、すべて問題ありません。フォームから指定された日付は、実際の日付よりも小さいです。

変数で機能しない理由を誰かが知っていますか?

ありがとう!

4

2 に答える 2

2

他の人とは異なり、何らかの理由でゼロベースであるため、月から1を取る必要があります。

于 2012-06-30T14:33:44.833 に答える
2

Dateコンストラクターに渡す値の有効性を確認する必要があります。これには、厄介な驚きを避けるために、すべての呼び出しの 2 番目のパラメーターとして明示的に指定することが含まれます。10parseInt

2番目のパラメーターについて、ドキュメントには次のように書かれています

このパラメーターはオプションですが、読者の混乱を防ぎ、予測可能な動作を保証するために、常に指定してください。基数が指定されていない場合、異なる実装では異なる結果が生成されます。

于 2012-06-30T14:20:31.573 に答える