批处理中怎样进行日期的加减法
例如:日期20130928直接减去1会得到20130927,但是20130901减1会得到20130900,如果我想20130901减1得到20130831应该怎么做呢?...
例如:日期20130928直接减去1会得到20130927,但是20130901减1会得到20130900,如果我想20130901减1得到20130831应该怎么做呢?谢谢!
这种格式也行2013-09-28 展开
这种格式也行2013-09-28 展开
展开全部
请看一下这篇博客,这篇博客已经把日期算法封装了,直接调用就可以了.
http://www.cnblogs.com/mac_arthur/archive/2011/12/12/2285013.html
例1:
@echo off&setlocal
call :Date2Day "2013-09-30" -1 Day (1天后的日期)
echo %Day%
call :Date2Day "2013-09-30" 10 Day (10天前的日期)
echo %Day%
Pause
Exit
rem 使用方法:call :Date2Day 2007-11-12 2 Day
rem 变量 Day 就是2007-11-12 减2的结果。
:Date2Day 计算指定天数 前/后 的日期 (封装)
@echo off&setlocal
for /f "tokens=1-3 delims=/-:\, " %%a in ('echo/%~1') do (
set /a yy=%%a,mm=100%%b%%100,dd=100%%c%%100)
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
set /a i=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %~3=%yy%%f%%mm%%f%%dd%&goto :EOF
---------------------------------------------------- 分割线 ----------------------------------------------------
@Echo Off
Echo NewDate = DateAdd^("d", Wscript.arguments^(1^), Wscript.arguments^(0^)^)>Day.vbs
Echo Wscript.Echo NewDate>>Day.vbs
Set ymd=2013-09-30
Set d=10
For /f "tokens=*" %%i in ('cscript /nologo Day.vbs %ymd% %d%') do (Echo 日期加十天 %%i)
Set ymd=2013-09-30
Set d=-10
For /f "tokens=*" %%i in ('cscript /nologo Day.vbs %ymd% %d%') do (Echo 日期减十天 %%i)
Pause
Del /q Day.vbs
批处理+vbs计算日期天数,调用Day.vbs来计算日期天数.方法和 "公子七哥"相同.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询