文字列を相互にチェックyyyy-mm-dd hh:mm:ss
するのは非常に簡単です。数値が何を基数としているかを忘れて、単純に<
or>
を文字列比較のように行うことができます。これは、他の日付では機能しない場合があります。
function compISOZDate(d1, d2) { // d1 is
if (d1 < d2) return -1; // smaller
if (d1 === d2) return 0; // the same
/* else */ return 1; // bigger
}
月の日数が変わる可能性があるため、日付の検証はもう少し複雑です。この事実を無視して数字をテストするだけでもかまいませんが、上限を導入して途中で会うことを好みます。
function verifyMyDate(d) {
var re = /^\d{4}-(0[1-9]|1[0-2])-([0-2]\d|3[01]) (0\d|1[01]):[0-5]\d:[0-5]\d$/;
// yyyy - MM - dd hh : mm : ss
return re.test(d);
}
たとえば、それを使用して
var d1 = '2013-10-07 11:58:26',
d2 = '2012-06-14 19:22:03';
// check
if (!verifyMyDate(d1)) throw new Error('Invalid date: ' + d1);
if (!verifyMyDate(d2)) throw new Error('Invalid date: ' + d2);
// compare
compISOZDate(d1, d2); // 1, d1 is bigger than d2
// also
compISOZDate(d2, d1); // -1
compISOZDate(d1, d1); // 0
あとは、入力から値を取得するだけです。