どなたか、JavaScriptを使って2つの日付の値を「大きい」「小さい」「過去にない」で比較する方法を教えてください。値はテキストボックスから取得する予定です。
Dateオブジェクト](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)は、各日付ごとに1つずつ作成し、>
、<
、<=
、>=
を使って比較するという、あなたが望むことを行います。
ただし、==
, !=
, ===
, !==
の演算子は、以下のように date.getTime()
を使用する必要があります。
var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();
はっきり言って、日付オブジェクトで直接等質性をチェックするだけではうまくいきません。
var d1 = new Date();
var d2 = new Date(d1);
console.log(d1 == d2); // prints false (wrong!)
console.log(d1 === d2); // prints false (wrong!)
console.log(d1 != d2); // prints true (wrong!)
console.log(d1 !== d2); // prints true (wrong!)
console.log(d1.getTime() === d2.getTime()); // prints true (correct)
入力検証地獄に陥らないためにも、テキストボックスではなく、ドロップダウンなどの制約のある形式で日付を入力することをお勧めします。
フォーマットは?
JavascriptでDateオブジェクトを作成すれば、ミリ秒の差を得るためにそれらを差し引くことができます(編集:あるいは単に比較することもできます)。
js>t1 = new Date()
Thu Jan 29 2009 14:19:28 GMT-0500 (Eastern Standard Time)
js>t2 = new Date()
Thu Jan 29 2009 14:19:31 GMT-0500 (Eastern Standard Time)
js>t2-t1
2672
js>t3 = new Date('2009 Jan 1')
Thu Jan 01 2009 00:00:00 GMT-0500 (Eastern Standard Time)
js>t1-t3
2470768442
js>t1>t3
true
var date = new Date(); // will give you todays date.
// following calls, will let you set new dates.
setDate()
setFullYear()
setHours()
setMilliseconds()
setMinutes()
setMonth()
setSeconds()
setTime()
var yesterday = new Date();
yesterday.setDate(...date info here);
if(date>yesterday) // will compare dates