[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 批处理怎样计算两个日期时间的差值?

开始时间:2010-01-18 01:02:03
结束时间:2011-02-19 00:00:00
希望得到的结果:1年31日22时57分57秒
Do All in Command Line

  1. @echo off
  2. set StartTime=2010-01-18 01:02:03
  3. set EndTime=2011-02-19 00:00:00
  4. set StartTime=%StartTime:-= %
  5. set StartTime=%StartTime::= %
  6. set EndTime=%EndTime:-= %
  7. set EndTime=%EndTime::= %
  8. call :DateToSecs %StartTime% StartSecs
  9. call :DateToSecs %EndTime% EndSecs
  10. set /a DiffSecs=EndSecs-StartSecs
  11. set DiffSecs=%DiffSecs:-= %
  12. set /a Y=DiffSecs/31536000
  13. set /a D=(DiffSecs%%31536000)/86400
  14. set /a H=(DiffSecs%%86400)/3600
  15. set /a M=(DiffSecs%%3600)/60
  16. set /a S=DiffSecs%%60
  17. echo %Y%年%D%日%H%时%M%分%S%秒
  18. goto :eof
  19. :DateToSecs %yy% %mm% %dd% %hh% %nn% %ss% secs
  20. setlocal ENABLEEXTENSIONS
  21. set yy=%1&set mm=%2&set dd=%3&set hh=%4&set nn=%5&set ss=%6
  22. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  23. set /a dd=100%dd%%%100,mm=100%mm%%%100
  24. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  25. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  26. if 1%hh% LSS 20 set hh=0%hh%
  27. if {%nn:~2,1%} EQU {p} if "%hh%" NEQ "12" set hh=1%hh%&set/a hh-=88
  28. if {%nn:~2,1%} EQU {a} if "%hh%" EQU "12" set hh=00
  29. if {%nn:~2,1%} GEQ {a} set nn=%nn:~0,2%
  30. set /a hh=100%hh%%%100,nn=100%nn%%%100,ss=100%ss%%%100
  31. set /a j=j*86400+hh*3600+nn*60+ss
  32. endlocal&set %7=%j%&goto :EOF
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 pcl_test 于 2019-3-15 21:02 编辑
  1. @echo off
  2. set time1=2010-01-18 01:02:03
  3. set time2=2011-02-19 00:00:00
  4. >"%tmp%\$t.vbs" echo;WSH.echo DateDiff("s","%time1%","%time2%")
  5. for /f %%a in ('cscript -nologo "%tmp%\$t.vbs"') do set t=%%a
  6. set /a "y=t/31536000,d=(t %% 31536000)/86400,h=(t %% 86400)/3600,m=(t %% 3600)/60,s=t %% 60"
  7. echo;%y%年%d%天%h%时%m%分%s%秒
  8. pause
复制代码

TOP

返回列表