那两句 if neq 的判断没有必要,反而有逻辑错误,应写成:- if %date:~5,1% EQU 0 (set m=%date:~6,1%) else set m=%date:~5,2%
- if %date:~8,1% EQU 0 (set d=%date:~9,1%) else set d=%date:~8,2%
复制代码 或者按惯例直接写成一句:- set /a m=1%date:~5,2%-100,d=1%date:~8,2%-100
复制代码 另,也写过日期转星期的函数,如下:- :::::::::::::::weeks 日期转星期函数::::::::::::::::::
- :: 用法: ::
- :: call :weeks Date retvar ::
- :: %1 Date 要计算的日期,不判断是否合法 ::
- :: 格式(YYYYMMDD) ::
- :: %2 retvar 用于保存星期(1~7)的变量名 ::
- :::::::::::::::::::::::::::::::::::::::::::::::::::::
-
- :weeks Date retvar ###### 公式算法
- setlocal disabledelayedexpansion&set "date=%~1"
- set /a m=1%date:~4,2%-100,m+=!(m/3)*12,w=(7%date:~6,2%+2*m+3*(m+1)/5+(y=%date:~,4%-m/13)+y/4-y/100+y/400)%%7+1
- set "%~2=%w%"
复制代码
|