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

[日期时间] 计算时间差的批处理代码怎样修正?

本帖最后由 jinzeyu 于 2012-2-29 19:59 编辑

论坛搜索查到一个
http://bbs.bathome.net/thread-11128-1-1.html
但是有些不好理解 自己写了一个
  1. @echo off&setlocal ENABLEDELAYEDEXPANSION
  2. rem 清空变量
  3. for /f "delims==" %%a in ('set') do set %%a=
  4. set /a a1=31,a2=59,a3=90,a4=120,a5=151,a6=181,a7=212,a8=243,a9=273,a10=304,a11=334,a12=365
  5. set /a b1=31,b2=60,b3=91,b4=121,b5=152,b6=182,b7=213,b8=244,b9=274,b10=305,b11=335,b12=366
  6. set "start=2007 11 17 14 35 00"
  7. :main
  8. set tian=0
  9. set end=%date:~0,11%%time:~0,8%
  10. set end=%end:-= %
  11. set end=%end::= %
  12. call:handle %start% 1
  13. call:handle %end% 2
  14. if "%n1%"=="%n2%" goto equ
  15. set /a n=%n2%-1
  16. rem 累加天数
  17. for /l %%i in (%n1%,1,%n%) do (set /a "tian=tian+(^!(%%i%%4)&^!(^!(%%i%%100))|^!(%%i%%400))+365")
  18. set /a "iii=^!(n1%%4)&^!(^!(n1%%100))|^!(n1%%400)"
  19. if "%iii%"=="1" (set temp=b) else set temp=a
  20. set /a tian=%tian%-!%temp%%y1%!-%r1%
  21. set /a "iii=^!(n2%%4)&^!(^!(n2%%100))|^!(n2%%400)"
  22. if "%iii%"=="1" (set temp=b) else set temp=a
  23. set /a tian=%tian%+!%temp%%y2%!+%r2%
  24. :shuchu
  25. rem 输出
  26. set /a shi=%s2%-%s1%
  27. set /a fen=%f2%-%f1%
  28. set /a miao=%m2%-%m1%
  29. if %miao% lss 0 set /a fen-=1&set /a miao+=60
  30. if %fen% lss 0 set /a shi-=1&set /a fen+=60
  31. if %shi% lss 0 set /a tian-=1&set /a shi+=24
  32. cls
  33. echo %tian%天%shi%时%fen%分%miao%秒
  34. goto main
  35. :handle 年 月 日 时 分 秒
  36. set /a n%7=%1,y%7=100%2,r%7=100%3,s%7=100%4,f%7=100%5,m%7=100%6
  37. set /a y%7=!y%7!%%100
  38. set /a r%7=!r%7!%%100
  39. set /a s%7=!s%7!%%100
  40. set /a f%7=!f%7!%%100
  41. set /a m%7=!m%7!%%100
  42. goto:eof
  43. :equ
  44. set /a "iii=^!(n2%%4)&^!(^!(n2%%100))|^!(n2%%400)"
  45. set temp=a
  46. if "%iii%"=="1" set temp=b
  47. set /a tian=!%temp%%y2%!+%r2%-!%temp%%y1%!-%r1%
  48. goto shuchu
复制代码
总是差一两天 代码哪里写错了
请帮忙修正 或解释一下这个代码

人家正确的33行,你这个错误的48行。到底神马叫做复杂?

TOP

回复 2# find


    我自认为我这个较好理解......挨个天数加起来...

TOP

回复 3# jinzeyu


你自己好理解还不够,想让别人给你找bug,至少写点注释先啊

TOP

回复 4# find


    好的

TOP

回复 4# find


    我已注释 虽说简单 但应该以足够..............

TOP

本帖最后由 jinzeyu 于 2012-2-28 10:34 编辑

没有人吗?

TOP

回复 7# jinzeyu


可能是注释太简单跟没注释一样,别人不愿意看。

TOP

回复 8# find


    ....................

TOP

建议楼主看看此贴了解下批处理时间计算的原理

http://www.bathome.net/thread-5659-1-1.html
***共同提高***

TOP

回复 10# batman


    版主能否帮忙检查一下我的代码

TOP

返回列表