心态决定命运
分类: Windows平台
2015-01-14 11:13:38
@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,"K=!(M-4)|!(M-6)|!(M-9)|!(M-11)","D+=!D*
(!(M-2)*(28+!(Y%%4))+K*30+(!!(M-2)&!K)*31)"
set M=0%M%&set D=0%D%
set yesterday=%Y%-%M:~-2%-%D:~-2%
echo %yesterday%
pause
rem 1%date:~8,2%%%100-1 当前日期减1
rem M=1%date:~5,2%%%100-!D 如果D为0,则M减1,否则M不变
rem Y=%date:~0,4%-!M 如果M为0,则Y减1,否则Y不变
rem M+=!M*12 如果M为0,则令M为12,否则M不变
rem "K=!(M-4)|!(M-6)|!(M-9)|!(M-11)" 如果M为4或6或9或11,令K为1,其他时候为0
rem D+=!D*(!(M-2)*(28+!(Y%%4))+K*30+(!!(M-2)&!K)*31) 这里!D* :如果D为非0,则D不变,如果D为0,则D为(!(M-2)*(28+!(Y%%
4))+K*30+(!!(M-2)&!K)*31)
rem 而(!(M-2)*(28+!(Y%%4))+K*30+(!!(M-2)&!K)*31)中,如果M为4或6或9或11,则D为30;如果M为1或3或5或7或8或10或12时,D为31
;如果M为2时,若闰年D为29,若非闰年,D为28