バッチファイルで指定した日付の曜日(数値)を取得する

バッチファイルバッチ

記事内に広告が含まれています。

バッチファイルで指定した日付の曜日(数値)を取得する方法をご紹介します。

コーディング例

@ECHO OFF

REM 曜日を取得する年月日(YYYYMMDD)
SET YMD=20241001

REM 西暦の年を取得
SET /A YYYY=%YMD:~0,4% * 1

REM 月を取得
SET /A MM=%YMD:~4,2% * 1

REM 日を取得
SET /A DD=%YMD:~6,2% * 1

REM 「ツェラーの公式」を使用するにあたり、
REM 1月と2月は前年の13月、14月として扱う
IF %MM% LEQ 2 (
    SET /A YYYY=%YYYY% - 1
    SET /A MM=%MM% + 12
)

REM 「ツェラーの公式」を使用し、日曜~土曜を0~6の数値で取得する
SET /A DAYOFWEEK=(%YYYY% + (%YYYY% / 4) - (%YYYY% / 100) + (%YYYY% / 400) + ((13 * %MM% + 8) / 5) + %DD%) %% 7

ECHO 曜日:%DAYOFWEEK%

実行結果

曜日:2

日付から曜日を取得する方法として「ツェラーの公式」を使用しています。
4行目で曜日を取得する対象となる日付をYYYYMMDD形式で指定しています。
7行目、10行目、13行目では4行目で指定した日付の年・月・日を取得しています。
17~20行目では、「ツェラーの公式」を使用するにあたり1月と2月を前年の13月、14月として変更しています。
23行目で「ツェラーの公式」を使用して曜日を取得しており、以下の計算になります。

([年]+([年]÷4)-([年]÷100)+([年]÷400)+((13×[月]+8)÷5)+[日])を7で割った余り

結果は日曜~土曜を0~6で返します。
2024/10/01は火曜ですので結果として「2」が返されます。

以上、バッチファイルで指定した日付の曜日(数値)を取得する方法のご紹介でした。

システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ