JavaScriptで現在、今週、今月、今年の開始および終了日を取得する方法

以下はJavaScriptを使用して特定の期間の開始日と終了日を取得する方法です。

function getToday(offset) {
    const today = new Date();
    const dayOffset = offset || 0;
    today.setDate(today.getDate() + dayOffset);
    const year = today.getFullYear();
    let month = today.getMonth() + 1;
    let day = today.getDate();
    month = month < 10 ? '0' + month : month;
    day = day < 10 ? '0' + day : day;
    return `${year}-${month}-${day}`;
}

getToday(); // 引数なしの場合、今日の日付を返す。引数に-1や1を入れると昨日や明日を取得可能。
二、今週、先週、来週の開始日と終了日を取得

function getWeekStartEnd(period, weekOffset) {
    const now = new Date();
    const currentDay = now.getDay();
    const oneDayMs = 24 * 60 * 60 * 1000;
    const offsetMs = oneDayMs * 7 * (weekOffset || 0);
    let targetDate;

    if (period === 'start') {
        targetDate = new Date(now - (currentDay - 1) * oneDayMs + offsetMs);
    } else if (period === 'end') {
        targetDate = new Date(now.getTime() + (7 - currentDay) * oneDayMs + offsetMs);
    }

    const year = targetDate.getFullYear();
    let month = targetDate.getMonth() + 1;
    let day = targetDate.getDate();
    month = month < 10 ? '0' + month : month;
    day = day < 10 ? '0' + day : day;
    return `${year}-${month}-${day}`;
}

getWeekStartEnd('start'); // 現在の週の月曜日の日付を取得
getWeekStartEnd('end', 1); // 次週の日曜日の日付を取得
三、今月、先月、来月の開始日と終了日を取得

function getMonthStartEnd(period, monthOffset) {
    const date = new Date();
    let year = date.getFullYear();
    let month = date.getMonth() + 1;

    if (Math.abs(monthOffset) > 12) {
        monthOffset %= 12;
    }

    if (monthOffset !== 0) {
        if (month + monthOffset > 12) {
            year++;
            month = (month + monthOffset) % 12 || 12;
        } else if (month + monthOffset < 1) {
            year--;
            month = 12 + month + monthOffset;
        } else {
            month += monthOffset;
        }
    }

    month = month < 10 ? '0' + month : month;
    const firstDay = `${year}-${month}-01`;
    let lastDay;

    switch (month) {
        case '01': case '03': case '05': case '07': case '08': case '10': case '12':
            lastDay = `${year}-${month}-31`;
            break;
        case '02':
            lastDay = ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) ? `${year}-${month}-29` : `${year}-${month}-28`;
            break;
        default:
            lastDay = `${year}-${month}-30`;
    }

    return period === 'start' ? firstDay : lastDay;
}

getMonthStartEnd('start'); // 今月の初日を取得
四、今年、去年、来年の開始日と終了日を取得

function getYearRange(period, yearOffset) {
    const now = new Date();
    const year = now.getFullYear() + (yearOffset || 0);

    if (period === 'start') {
        return `${year}-01-01`;
    } else if (period === 'end') {
        return `${year}-12-31`;
    }

    return `${year}-01-01/${year}-12-31`;
}

getYearRange('start', 1); // 来年の初日を取得

タグ: javascript 日付操作 開始終了日取得

7月1日 18:52 投稿