日付の週番号を取得したい | 日付・時間操作 | JavaScript 目的別リファレンス

スポンサーリンク

このプログラムでは、指定した日付がISO 8601規格に基づく週番号で何週目かを取得します。ISO週番号は月曜日を週の始まりとし、年の最初の木曜日を含む週を第1週目とします。

スポンサーリンク

使用するメソッド: getDay(), setDate(), setHours()

getDay()メソッドは、指定した日付が週の何曜日にあたるかを返します。setDate()setHours()メソッドは、日付と時間を設定するために使用されます。

日付のISO週番号を取得するプログラム

以下のコードでは、今日の日付に基づいてISO 8601週番号を取得しています。

HTMLとJavaScriptコード

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>日付のISO週番号を取得する方法</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            padding: 20px;
        }
        pre {
            background: #f4f4f4;
            border-left: 3px solid #ccc;
            padding: 10px;
            margin: 20px 0;
        }
    </style>

    <script>
        window.onload = function() {
            // ISO週番号を計算する関数
            function getISOWeekNumber(date) {
                const targetDate = new Date(date.getTime()); 
                targetDate.setHours(0, 0, 0, 0);
                targetDate.setDate(targetDate.getDate() + 4 - (targetDate.getDay() || 7));
                
                const firstDayOfYear = new Date(targetDate.getFullYear(), 0, 1);
                const weekNumber = Math.ceil(((targetDate - firstDayOfYear) / 86400000 + 1) / 7);
                return weekNumber;
            }

            // 今日の日付で週番号を取得
            const today = new Date();
            const weekNumber = getISOWeekNumber(today);

            // 結果をHTMLに表示
            document.getElementById('weekNumber').textContent = `ISO週番号: ${weekNumber}週目`;
        }
    </script>
</head>
<body>

    <h1>日付のISO週番号を取得する方法</h1>

    <div id="weekNumber"></div>

</body>
</html>

プログラムの解説

このプログラムでは、Dateオブジェクトを使い、特定の日付がISO週番号の何週目にあたるかを計算します。週の始まりを月曜日とし、年の最初の木曜日を含む週が第1週目となります。

Dateオブジェクトのメソッド一覧(抜粋)

メソッド名 説明
getDay() 指定された日付が週の何曜日かを取得します。0は日曜日、6は土曜日です。
setDate() 指定された日付に新しい日付を設定します。
setHours() 日付の時間、分、秒、ミリ秒を設定します。
getFullYear() 指定された日付の4桁の年を返します。
getTime() 指定された日付のミリ秒タイムスタンプを返します。