javascript 日付の大小比較と特定期間で実行を実装する方法

この記事は4年前に書かれました。不適当な記述を含む場合がありますので、参考程度に留めてください。

こんばんは。Toshikuraです。今回のtipsは【javascript 日付の大小比較と特定期間で実行を実装する方法】です。地味に使い勝手が良いこともあり、特定期間前だった場合や特定期間後の判別・分岐を含めた例をメモしておきます。

今日、開始日、終了日の取得方法

ますはじめに、今日、開始日、終了日を取得します。今回の大小判定ではgetTime()で取得できる1970/1/1午前0時からの特定日までのミリ秒を使用します。念のため各日付の年度/月/日も取得していますが、大小比較には使用しませんので無視していただいて構いません。


today = new Date();
myD = today.getTime(); // 1970/1/1午前0時からの現在までのミリ秒
myD_y = today.getFullYear(); // 現在の年度
myD_m = today.getMonth() + 1; // 現在の月 ※+1をお忘れなく
myD_d = today.getDate(); // 現在の日付

start = new Date(2010,11,10,0,0,0); // 開始日の指定 ※月は-1してください。例)1月なら0
myS = start.getTime(); // 1970/1/1午前0時からの開始日までのミリ秒
myS_y = start.getFullYear(); // 開始日の年度 ※記述しているので不要ですが年数を可変にする場合もあるか思いますので念のため
myS_m = start.getMonth() + 1; // 開始日の月
myS_d = start.getDate(); // 開始日の日付

end = new Date(2013,1,10,0,0,0); // 終了日の指定
myE = end.getTime(); // 1970/1/1午前0時からの終了日までのミリ秒
myE_y = end.getFullYear(); // 終了日の年度
myE_m = end.getMonth() + 1; // 終了日の月
myE_d = end.getDate(); // 終了日の日付

日付の大小比較

上記の記述により今日(myD)、開始日(myS)、終了日(myE)それぞれの【1970/1/1午前0時からの特定日までのミリ秒】が取得できました。これを使用し以下のように大小の判別が可能です。※デモでの出力テストのためにjQueryを使用していますが日付の取得や大小判別には関係ありませんのでご了承ください。

今日が終了日前か後かの判別

if(myE >= myD){
$(‘#now4’).text(‘今日は終了日前です。’);
}else{
$(‘#now4’).text(‘今日は終了日後です。’);
}
今日が開始日前か後かの判別

if(myS <= myD){
$(‘#now5’).text(‘今日は開始日後です。’);
}else{
$(‘#now5’).text(‘今日は開始日前です。’);
}
今日が開始日〜終了日にいるかの判別①

if(myS <= myD && myE >= myD){
$(‘#now6’).text(‘今日は開始日〜終了日の間です。’);
}else{
$(‘#now6’).text(‘今日は開始日〜終了日外です。’);
}
今日が開始日〜終了日にいるかの判別②

if(myS <= myD && myE >= myD){
$(‘#now7’).text(‘今日は開始日〜終了日の間です。’);
}else if(myS > myD){
$(‘#now7’).text(‘今日は開始日前です。’);
}else{
$(‘#now7’).text(‘今日は終了日後です。’);
}

以上になります。

参照:javascriptリファレンス Dateオブジェクト