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

[日期时间] [分享]批处理使用秒数计算时间

昨天去看过batman的“批处理中的时间计算详解”具体地址:批处理中的时间计算详解,才看了计算多少秒后的时间,从他的代码中得到了一点灵感,就用自己的方法也写了个功能一样的。在分、秒前补0完全是用里面的代码的。这个只是贴出另一种方法而已,给大家参考。
    另:可能看起来很乱,不过我的只是一条条语句拼接起来而已
  1. @echo off
  2. ::将输入的秒数转为对应的:h时m分s秒 的格式
  3. ::将秒数转换后的时间和当前时间按对应的位置相加,
  4. ::并完成进位
  5. ::变量$h、$m、$s 表示当前时间
  6. ::变量h、m、s    表示秒数转换后的时间
  7. ::变量_h、_m、_s 表示相加后的时间
  8. set d=
  9. set /a $h=%time:~,-9%,$m=1%time:~-8,-6%%%100,$s=1%time:~-5,-3%%%100
  10. echo 当前时间:%$h%时 %$m%分 %$s%秒
  11. set /p a=输入秒数:
  12. set /a h=a/3600,m=a%%3600,s=m%%60,m/=60
  13. set /a _s=$s+s
  14. if %_s% geq 60 (set /a m+=1,_s-=60)
  15. set /a _m=$m+m
  16. if %_m% geq 60 (set /a h+=1,_m-=60)
  17. set /a _h=$h+h
  18. if %_h% geq 24 (set /a d=_h/24,_h%%=24)
  19. set _m=0%_m%&call set _m=%%_m:~-2%%
  20. set _s=0%_s%&call set _s=%%_s:~-2%%
  21. if defined d (echo %a%秒后的时间是:%d%天后的%_h%时 %_m%分 %_s%秒)else echo %a%秒后的时间是:%_h%时 %_m%分 %_s%秒
  22. pause>nul
复制代码

是不是有秒数上限?
我输入了几个大数,每次的结果都是24856天后。

TOP

回复 2# DAIC


    你至少都输入了10位数啊。。因为没有加年进位,所以最多就只能直接显示多少天后了

TOP

回复 3# xpw


    你没有理解我的意思。我是说,输入十个9和输入十一个9,结果都是24856天后,这显然是不对的。

TOP

回复 4# DAIC


    批处理中好像最大能处理的数是2147483648,所以大于这个数,结果都一样了

TOP

返回列表