![[tips][bat] バッチで「ツェラーの公式」による曜日の計算をする。](https://casualdevelopers.com/wp-content/uploads/2014/01/learn-2405206_1920-700x300.jpg)
「ツェラーの公式」というのは曜日を計算するための公式です。詳しくはWikipediaに任せて、ここではバッチでのコードをお見せします。
以下がバッチのツェラーの公式のコードです。
:set_week set TODAY=%date% REM 日付の分解 set /a h=%TODAY:~0,2% set /a y=%TODAY:~2,2% set m1=%TODAY:~5,1% set m2=%TODAY:~6,1% if "%m2%" equ "/" ( set /a m=m1 set /a d=%TODAY:~7,2% ) else ( set /a m=m1*10+m2 set /a d=%TODAY:~8,2% ) if %m%==1 ( set /a y-=1&set /a m+=12 ) if %m%==2 ( set /a y-=1&set /a m+=12 ) REM ツェラーの公式 set /a week_value=( y + (y/4) + (h/4) - 2*h + (13*(m+1)/5) + d ) %% 7 REM 曜日の設定 if %week_value%==0 set WEEK=SAT if %week_value%==1 set WEEK=SUN if %week_value%==2 set WEEK=MON if %week_value%==3 set WEEK=TUE if %week_value%==4 set WEEK=WED if %week_value%==5 set WEEK=THU if %week_value%==6 set WEEK=FRI exit /b
「WEEK」という環境変数に結果が格納されているので、以下で確認できます。
@echo off call :set_week echo %WEEK% pause
曜日の計算方法はたまに役に立つことがありますから、知っていて損はないでしょう。まあ、バッチである必要はまったくないんですけどね。
<環境>
OS : Windows7