要求%date%必须形如2011-01-07。
某个月天数的计算:- @echo off
- set/a Y=%date:~0,4%,M=1%date:~5,2%%%100,"C=!(M-4)|!(M-6)|!(M-9)|!(M-11)","E=!(M-2)*(28+!(Y%%4))+C*30+(!!(M-2)&!C)*31"
- echo %Y%年%M%月有%E%天
- pause
复制代码 上个月的最后一天的获取:- @echo off
- set/a M=1%date:~5,2%%%100-1,Y=%date:~0,4%-!M,M+=!M*12,"C=!(M-4)|!(M-6)|!(M-9)|!(M-11)","E=!(M-2)*(28+!(Y%%4))+C*30+(!!(M-2)&!C)*31"
- set M=0%M%
- echo 今天的日期:%date:~0,10%
- echo 上个月的最后一天是:%Y%-%M:~-2%-%E%
- pause
复制代码 一天前的日期:- @echo off
- set/a D=1%date:~8,2%%%100-1,M=1%date:~5,2%%%100-!D,Y=%date:~0,4%-!M,M+=!M*12,"C=!(M-4)|!(M-6)|!(M-9)|!(M-11)","D+=!D*(!(M-2)*(28+!(Y%%4))+C*30+(!!(M-2)&!C)*31)"
- set M=0%M%&set D=0%D%
- echo 今天的日期:%date:~0,10%
- echo 一天前的日期:%Y%-%M:~-2%-%D:~-2%
- pause
复制代码 对于以上代码,如果限定年份为1901以前也包括,则可以把 !(Y%%4) 改成!(Y%%4)&!!(Y%%100))|!(Y%%400) 。
[ 本帖最后由 hanyeguxing 于 2011-1-7 18:20 编辑 ] |