Board logo

标题: [求助] 时间计算的方法! [打印本页]

作者: geffhv     时间: 2008-2-29 16:03    标题: [求助] 时间计算的方法!
我想做一个四则运算的批处理 主要用来做加时间的 像 14:48到 22:48 = 8个小时 怎么实现 求助! 计时的好了吧 和跑表一样的功能 [ Last edited by geffhv on 2008-3-1 at 10:34 PM ]

作者: plp626     时间: 2008-2-29 16:11
没怎么明白 说详细些

作者: fastslz     时间: 2008-2-29 16:22
@echo off
>test.vbs echo aDate="13:20:00"
>>test.vbs echo bDate="22:20:00"
>>test.vbs echo Wscript.echo DateDiff("h", aDate, bDate)
for /f "delims=" %%i in ('cscript.exe //nologo test.vbs') do set N=%%i&del test.vbs
echo 计算结果%N%个小时
pause

作者: plp626     时间: 2008-2-29 17:46
呵呵,向你学习vbs了! 这个帖子和下面的帖子很类似呀.也同样是我和fastslz跟帖. 批处理怎样计算时间 www.cn-dos.net/forum/viewthrea ...

作者: 26933062     时间: 2008-3-1 00:12
纯批也可以, 但没作00:点的判断处理。
@echo off
cls
set kai=14:18
set jies=22:18
call :lis %kai% km
call :lis %jies% jm
set /a ca=jm-km,max=216000
for %%a in (s f m) do (
  set /a max/=60,%%a=^(ca-^(ca%%max^)^)/max,ca=ca%%max
)
echo\&echo  %kai% 到 %jies% = %s% 小时 %f% 分 %m% 秒
echo\&pause&exit
:lis
for /f "tokens=1-3 delims=:" %%a in ("%~1%") do (
   set /a s=100%%a%%100*3600,f=100%%b%%100*60,m=100%%c%%100
)
set /a %2=s+f+m
goto :eof

作者: nanhui112     时间: 2008-3-7 20:44    标题: 代码就不写啦 ^_^
1:确定时间格式 a=Tt:Mm:Ss a1=tt:mm:ss 24小时制 2: 提取a小时位,分钟位,秒数位 %a:~0,2% %a:~3,2% %a:~6,2% 提取a1小时位,分钟位,秒数位 %a1:~0,2% %a1:~3,2% %a1:~6,2% 3: 对a 判断T,M,S 位判断是否为0 %a:~0,1% %a:~3,1% %a:~6,1% 如果为0 用set %a:~0,2%=%a:~1,1% 依此类推 同理a1 也要判断。 4: 计算差 set/a tt-Tt mm-Mm ss-Ss 并对最后结果用if判断是否小于0 ,如果是0 时间位加上24 分数位加上60 秒数位加上60,再对每次结果是否小于(lss)10 进行判断 如果是 用set 进行补0 如 用t代表tt-Tt的结果 if %t% lss 10 (set t=0t) 依此类推分数,秒数位。 5: 输出结果 echo 格式 t:m:s --------------仅支持24小时以内,一起加油。晕 -- 加24 或 60 时 要记得高位减一计算 !!! [ Last edited by nanhui112 on 2008-3-7 at 08:55 PM ]

作者: terse     时间: 2008-3-7 20:51
去掉原来的 替换一个现在的
@echo off
set aDate=01:35:18
set bDate=21:09:08
for /f "tokens=1-3 delims=:" %%i in ("%aDate%") do (
set/a h1=1%%i-100,h2=1%%j-100,h3=1%%k-100
)
for /f "tokens=1-3 delims=:" %%i in ("%bDate%") do (
set/a n1=1%%i-100,n2=1%%j-100,n3=1%%k-100
)
if %n3% geq %h3% (set/a n3-=h3) else set/a n3=60+n3-h3,h2+=1
if %n2% geq %h2% (set/a n2-=h2) else set/a n2=60+n2-h2,h1+=1
if %n1% geq %h1% (set/a n1-=h1) else set/a n1=24+n1-h1
echo\&echo  %aDate% 到 %bDate% = %n1% 小时 %n2% 分 %n3% 秒
echo\&pause&exit
这个计算运行时间,精确到最后两位
@echo off
set aDate=%time: =%
echo 按任意键,显示从开始运行到按键的时间
pause
set bDate=%time: =%
for /f "tokens=1-4 delims=:." %%i in ("%aDate%") do set/a h1=1%%i-100,h2=1%%j-100,h3=1%%k-100,h4=1%%l-100
for /f "tokens=1-4 delims=:." %%i in ("%bDate%") do set/a n1=1%%i-100,n2=1%%j-100,n3=1%%k-100,n4=1%%l-100
if %n4% geq %h4% (set/a n4-=h4) else set/a n4=100+n4-h4,h3+=1
if %n3% geq %h3% (set/a n3-=h3) else set/a n3=60+n3-h3,h2+=1
if %n2% geq %h2% (set/a n2-=h2) else set/a n2=60+n2-h2,h1+=1
if %n1% geq %h1% (set/a n1-=h1) else set/a n1=24+n1-h1
echo\&echo  %aDate% 到 %bDate% = %n1% 小时 %n2% 分 %n3% 秒 %n4%
echo\&pause&exit
[ Last edited by terse on 2008-4-10 at 12:51 PM ]

作者: geffhv     时间: 2008-3-9 21:03
谢谢大家 但没我要的

作者: plp626     时间: 2008-3-10 00:22
只为学习--------你要何? 我当一回雷锋

作者: woo88     时间: 2008-3-11 17:28
一样

作者: klyx     时间: 2008-4-9 21:42
Originally posted by terse at 2008-3-7 08:51 PM: 我来一个 写错一字符 改 @echo off set Date1=01:35:18 set Date2=21:58:55 for /f "tokens=1-3 delims=:" %%i in ("%Date1%") do ( set h1=%%i set h2=%%j ...
当set Date2=21:09:08 出错了 01:35:18 到 21:09:08 = 19 小时 24 分 42 秒 01:35:18 到 21:07:07 = 19 小时 31 分 49 秒

作者: terse     时间: 2008-4-9 22:47
Originally posted by klyx at 2008-4-9 21:42: 当set Date2=21:09:08 出错了 01:35:18 到 21:09:08 = 19 小时 24 分 42 秒 01:35:18 到 21:07:07 = 19 小时 31 分 49 秒
可能是0开头的问题

作者: klyx     时间: 2008-4-10 11:09
Originally posted by terse at 2008-4-9 10:47 PM: 可能是0开头的问题
是个位8,9问题

作者: terse     时间: 2008-4-10 12:22
Originally posted by klyx at 2008-4-10 11:09: 是个位8,9问题
说的对,更确切的说应该是在十位是0时 个位大于7就会出错,

作者: klyx     时间: 2008-4-10 14:53
怎样读取time.txt最后一行时间 time.txt: 2008-04-10 星期四 12:42:15 2008-04-10 星期四 12:42:16 2008-04-10 星期四 12:42:17 2008-04-10 星期四 12:42:18 2008-04-10 星期四 12:42:19

作者: plp626     时间: 2008-4-10 14:57
这个时间差的问题我至少见过8次了!!!! 多点一个链接就可以解决了,......

作者: klyx     时间: 2008-4-11 11:15
Originally posted by terse at 2008-3-7 08:51 PM: 去掉原来的 替换一个现在的 [code] @echo off set aDate=01:35:18 set bDate=21:09:08 for /f "tokens=1-3 delims=:" %%i in ("%aDate%" do ( set/a h1=1%%i-100,h2=1% ...
又出错了 9:59:59.99 到 10:00:01.00 = 90 小时 0 分 1 秒 1 搞不懂为什么写h1=1%%i-100 为什么不写h1=%%i 我不是手工输入的,也许你的机子和我不一样 最好能判断一下有0无0,无0加0 [ Last edited by klyx on 2008-4-11 at 04:43 PM ]

作者: terse     时间: 2008-4-11 13:28
Originally posted by klyx at 2008-4-11 11:15: 又出错了 9:59:59.99 到 10:00:01.00 = 90 小时 0 分 1 秒 1 搞不懂为什么写h1=1%%i-100 为什么不写h1=%%i [ Last edited by klyx on 2008-4-11 at 11:55 AM ]
9:59:59.99这个前面应该有个0的吧 因为系统是显示有0的 h1=1%%i-100 这样写就是为着时间在10时前 有0的问题 你是手工输入 可能因为少个0 所以会出错的 [ Last edited by terse on 2008-4-11 at 01:33 PM ]

作者: 121872020     时间: 2008-4-11 19:01
sdfsdfsdf

作者: 121872020     时间: 2008-4-11 19:01
sdfsdf