批处理计算时间差的方法总结
2017-12-25 12:25
218 查看
出处: http://blog.51cto.com/conducer/1377650
有些时候我们需要计算某些程序或任务执行完毕所耗费的时间,这就需要对时间进行计算,虽然计算时间的代码有N多种,但这里主要是想和大家分享一下用批处理来计算时间差的方法。
目标:以时、分、秒的形式显示所耗费的时间(不包括日期计算,即不超过24小时)。
思路:获取开始时间和结束时间,然后计算时间差。
方法:①退位加减法;②总数加减法
难点:①如何获取时、分、秒;②如何避开小数点和08、09
技巧:①用for变量循环法取数;②用变量扩展法取数;③用if判断0开头的数字;④用set /a 去掉0开头的数字
一、获取时间的方法:
用time变量即可轻松获取任意时点的时间,如
二、获取时、分、秒的方法:
通过time变量获取的时间格式是 hour:minite:second,如 20:02:09.07
1、for变量循环截取法
以上脚本执行的结果是这样的形式:20时02分09.07秒,可见,秒的数是带有小数点的,在后面如果用set /a 命令去计算就会出错,这时也可以再用一次for命令去取小数点的前两位,但这样脚本会显得很累赘,因此我们可以用更简洁的变量扩展法来取数。
2、变量扩展偏移截取法
批处理里有变量扩展的命令可用于截取变量中指定位置的字符。
截取功能统一语法格式为:%a:~[m[,n]]%
方括号表示可选,%为变量标识符,a为变量名,冒号用于分隔变量名和说明部分,波浪号~可理解为“偏移”,m为偏移量(缺省为0),n为截取长度(缺省为全部)。
例如 set var=%a:~1,2% 表示把变量a的值从第2位(偏移量1)开始,把2个字符赋予给变量var。
那么,我们获取时、分、秒数值的脚本如下:
以上脚本执行的结果是这样的形式:20时02分09秒,这时,秒的数值已经没有小数点了,但分和秒的数值高位都是以0开头,如果用set /a 命令去计算还是会出错,为此我们可以再用一次截取命令去判断这个位置的数值是否是0。脚本如下:
其实我们可以在窃取变量的时候直接用set /a 命令来获取数值,这样更省事,对于以0开头的数字,我们在百位添加一个1给它,然后再减去100即可。脚本如下:
以上脚本执行的结果是这样的形式:20时2分9秒,这样,时、分、秒上的数字就可以直接参与计算了,用同样的方法我们可以获取结束时间:%h2%时%m2%分%s2%秒。
三、计算时间差的方法
1、退位加减法
所谓退位加减法就是以分、秒60进制,小时24进制,当被减数不够用时从高位借1来进行计算的方法。这种计算方法与我们用笔来算的方法相同,脚本代码如下:
2、总数加减法
所谓总数加减法就是先分别计算开始时间和结束时间的总秒数,然后计算两者相差的秒数,再把相差的秒数换算为时、分、秒的形式。脚本代码如下:
四、实例
下面给出两种计算时间差的完整例子,以供参考:
方法一:退位加减法
方法二:总数加减法
有些时候我们需要计算某些程序或任务执行完毕所耗费的时间,这就需要对时间进行计算,虽然计算时间的代码有N多种,但这里主要是想和大家分享一下用批处理来计算时间差的方法。
目标:以时、分、秒的形式显示所耗费的时间(不包括日期计算,即不超过24小时)。
思路:获取开始时间和结束时间,然后计算时间差。
方法:①退位加减法;②总数加减法
难点:①如何获取时、分、秒;②如何避开小数点和08、09
技巧:①用for变量循环法取数;②用变量扩展法取数;③用if判断0开头的数字;④用set /a 去掉0开头的数字
一、获取时间的方法:
用time变量即可轻松获取任意时点的时间,如
通过time变量获取的时间格式是 hour:minite:second,如 20:02:09.07
1、for变量循环截取法
2、变量扩展偏移截取法
批处理里有变量扩展的命令可用于截取变量中指定位置的字符。
截取功能统一语法格式为:%a:~[m[,n]]%
方括号表示可选,%为变量标识符,a为变量名,冒号用于分隔变量名和说明部分,波浪号~可理解为“偏移”,m为偏移量(缺省为0),n为截取长度(缺省为全部)。
例如 set var=%a:~1,2% 表示把变量a的值从第2位(偏移量1)开始,把2个字符赋予给变量var。
那么,我们获取时、分、秒数值的脚本如下:
三、计算时间差的方法
1、退位加减法
所谓退位加减法就是以分、秒60进制,小时24进制,当被减数不够用时从高位借1来进行计算的方法。这种计算方法与我们用笔来算的方法相同,脚本代码如下:
所谓总数加减法就是先分别计算开始时间和结束时间的总秒数,然后计算两者相差的秒数,再把相差的秒数换算为时、分、秒的形式。脚本代码如下:
下面给出两种计算时间差的完整例子,以供参考:
方法一:退位加减法
相关文章推荐
- c/c++在windows下获取时间和计算时间差的几种方法总结
- c/c++在windows下获取时间和计算时间差的几种方法总结
- java中的时间计算和格式处理方法
- 【转载】c/c++在windows下获取时间和计算时间差的几种方法总结
- c++ 在windows下获取时间和计算时间差的几种方法总结
- 批处理计算时间差的方法总结
- c/c++在windows下获取时间和计算时间差的几种方法总结
- c/c++在windows下获取时间和计算时间差的几种方法总结
- c++ 在windows下获取时间和计算时间差的几种方法总结
- c和c++在windows下获取时间和计算时间差的方法总结
- 图像实时处理常用时间间隔计算方法(微秒级)
- 图像实时处理常用时间间隔计算方法(微秒级)
- 4000 获取时间和计算时间差的几种方法总结
- c/c++在windows下获取时间和计算时间差的几种方法总结
- 单缓冲 vs 双缓冲 处理数据时间计算方法
- c/c++获取时间和计算时间差的几种方法总结
- Android编程计算函数时间戳的相关方法总结
- windows下获取时间和计算时间差的几种方法总结
- c/c++在windows下获取时间和计算时间差的几种方法总结
- c/c++在windows下获取时间和计算时间差的几种方法总结 【转】