CODE: [Copy to clipboard]
@echo off&color 9f&mode con lines=10
title 星期查询器
:set
cls
echo.&echo.&echo.
set var=
set /p var= 请输入要查询的日期(格式为2000年08月08日):
if "%var:~4,1%%var:~7,1%%var:~10,1%"=="年月日" goto year
cls
echo.&echo.&echo.
echo 输入格式不正确!请返回正确输入。&ping /n 3 127.1>nul&goto set
:year
set year=%var:~,4%
set /a str=(%year%-1904)/4&set /a str1=%year%-1904
for /l %%i in (0,1,3) do (
set a=%%i
setlocal enabledelayedexpansion
set /a str2=4*!str!+!a!
if !str1! equ !str2! goto month
)
:month
endlocal
if %a% equ 0 (set /a number1=%str%*1461) else (set /a number1=%str%*1461+%a%*365+1)
if %var:~5,1% equ 0 (set month=%var:~6,1%) else (set month=%var:~5,2%)
set /a month=%month%-1
if %month% equ 0 set /a number2=0&goto day
if %month% equ 1 set /a number2=31&goto day
if %month% equ 2 set /a number2=31+28
if %month% equ 3 set /a number2=31*2+28
if %month% equ 4 set /a number2=31*2+30+28
if %month% equ 5 set /a number2=31*3+30+28
if %month% equ 6 set /a number2=31*3+30*2+28
if %month% equ 7 set /a number2=31*4+30*2+28
if %month% equ 8 set /a number2=31*5+30*2+28
if %month% equ 9 set /a number2=31*5+30*3+28
if %month% equ 10 set /a number2=31*6+30*3+28
if %month% equ 11 set /a number2=31*6+30*4+28
if %a% equ 0 set /a number2=%number2%+1
:day
if %var:~8,1% equ 0 (set day=%var:~9,1%) else (set day=%var:~8,2%)
set /a number3=%day%-1
:week
set /a number=%number1%+%number2%+%number3%
set /a week=%number%/7
for /l %%i in (0,1,6) do (
set b=%%i
setlocal enabledelayedexpansion
set /a str=!week!*7+!b!
if !str! equ !number! goto echo
)
:echo
endlocal
set code=五六天一二三四
set /a move=%b%
cls
echo.&echo.&echo.
call,echo %var%那天是星期%%code:~%move%,1%%
pause>nul
cls
echo.&echo.&echo.
echo 本次查询结束,按键继续,结束请直接关闭窗口。
pause>nul&goto set
CODE: [Copy to clipboard]
@echo off
set/p y=请输入:(格式2008-1-11)
for /f "tokens=1-3 delims=-" %%i in ("%y%") do set y=%%i&set m=%%j&set d=%%k
if %m% leq 2 set/a y-=1,m+=12
set/a t=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%%7
if %t% neq 0 set/a t=7-t
:lp
if %m% gtr 12 set/a y+=1,m-=12
set/a PN2="!(y%%4) & !(!(y%%100)) | !(y%%400)",PN2=28+PN2
for /f "tokens=%m%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a d+=t&set pt=%%i
if %d% leq %pt% goto p
set/a d-=pt
set t=0&&set/a m+=1&&goto lp
:p
echo %y%年%m%月%d%日 星期日
pause