Chinaunix

标题: 如何在shell中实现两个时间相减并输出相差的小时数 [打印本页]

作者: 编程序了没    时间: 2013-12-26 14:03
标题: 如何在shell中实现两个时间相减并输出相差的小时数
如题。想在程序中查看一段代码的运行时间,在开始时取得日期和时间,结束后再取一次,进行相减,希望得到相差几个小时。
作者: Shell_HAT    时间: 2013-12-26 14:19
  1. time
复制代码

作者: huzikan    时间: 2013-12-26 14:23
BEGINTIME=`date +%R|sed 's/:.*//'`
...
...
ENDTIME=`date +%R|sed 's/:.*//'`

TIME=`expr  $ENDTIME - $BEGINTIME`

初学者,不知道写得对不对~~
作者: huang6894    时间: 2013-12-26 14:24
  1. => cat jindu.sh
  2. #!/bin/bash

  3. st=`date +%s` #记录开始
  4. b=''
  5. for ((i=0;$i<=100;i+=2))
  6. do
  7.     printf "progress:[%-50s]%d%%\r" $b $i
  8.     sleep 0.1

  9.     b=#$b
  10. done
  11. echo

  12. en=`date +%s`  #记录结尾
  13. min=`awk -ven=$en -vst=$st 'BEGIN{print (en-st)/60}'` #计算
  14. echo "it use $min minutes"
复制代码
  1. => sh jindu.sh
  2. progress:[##################################################]100%
  3. 5
复制代码

作者: 这个冬天不冷    时间: 2013-12-26 14:31
  1. [root@everIover ~]# start_time=$(date -d "20131225" +%s) #为了更好的测试 可以把d 参数去掉,这starttime是 20131225 00:00:00
  2. [root@everIover ~]# end_time=$(date +%s)#当前时间
  3. [root@everIover ~]# echo "($end_time-$start_time)/(60*60)"|bc
  4. 38
  5. [root@everIover ~]#
复制代码

作者: 编程序了没    时间: 2013-12-26 16:46
可以用变量吗回复 5# 这个冬天不冷


   
作者: 这个冬天不冷    时间: 2013-12-26 17:25
  1. shell中 只要echo 能输出的东西 都能赋给一个变量
复制代码

作者: huzikan    时间: 2013-12-26 20:22
本帖最后由 huzikan 于 2013-12-26 20:25 编辑

正解
     




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2