furoblog’s blog

妻と一緒にはじめました。1日1更新が目標です。

【JavaScript】日付処理で意識するべきこと

JavaScript

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 {
        // ターゲットを過ぎていなかった場合の処理
    }