JSでの日付処理って結構面倒です。
使う機会があったのでまとめます。
便利なソースコード
日付の差分日数を返す
『yyyy/mm/dd』の形で値を渡してあげて、何日分差分があるかを返します。
// 日付の差分日数を返却します。
// yyyy/mm/dd
function getDiff(date1Str, date2Str) {
var date1 = new Date(date1Str);
var date2 = new Date(date2Str);
// getTimeメソッドで経過ミリ秒を取得し、2つの日付の差を求める
var msDiff = date2.getTime() - date1.getTime();
// 求めた差分(ミリ秒)を日付へ変換します(経過ミリ秒÷(1000ミリ秒×60秒×60分×24時間)。端数切り捨て)
var daysDiff = Math.floor(msDiff / (1000 * 60 * 60 *24));
// 差分へ1日分加算して返却します
return ++daysDiff;
}
日付の比較
date1とdate2を比較し、date1を過ぎている場合はtrue。
過ぎていない場合はfalseを返します。
// 日付比較
function lowerThanDateOnly(date1, date2) {
var year1 = date1.getFullYear();
var month1 = date1.getMonth() + 1;
var day1 = date1.getDate();
var year2 = date2.getFullYear();
var month2= date2.getMonth() + 1;
var day2 = date2.getDate();
if (year1 == year2) {
if (month1 == month2) {
return day1 < day2;
}
else {
return month1 < month2;
}
} else {
return year1 < year2;
}
}
使い方のイメージとして、以下のような感じです。
注意点としては、年月日の月が、+1月で考える必要があります。
『2019,5,25,23,59,59』とコード上は書いてありますが、あれは6/25なので注意。
// 月は+1
var target = new Date(2019,5,25,23,59,59);
var now = new Date();
var checkTarget = lowerThanDateOnly(now,target);
if( checkTarget = false ){
// ターゲットを過ぎていた場合の処理
} else {
// ターゲットを過ぎていなかった場合の処理
}