比较一秒钟内的两个时间戳

时间:2013-12-16 10:09:15

标签: shell unix timestamp

我正在编写一个解析CSV文件并执行一些计算的shell脚本。

时间戳采用以下格式:HH:MM:SSS.sss并存储在变量中:$t2$t1

我想知道这两个邮票之间的区别(它总是不到一秒),并以秒为单位报告$t3(即:0.020

t3=$t2-$t1

但上面的代码只是打印两个变量之间的减号 - 如何比较两个时间戳?

2 个答案:

答案 0 :(得分:1)

这是一种时髦的方式!剥掉所有的秒数以获得毫秒。做减法。如果结果为负,那是因为秒数溢出,所以加回1000ms。在前面插入一个小数点,以毫秒为单位。

#!/bin/bash -xv
t1="00:00:02.001"
t2="00:00:03.081"
ms1=${t1/*\./}
ms2=${t2/*\./}
t3=$((10#$ms2-10#$ms1))
[[ $t3 < 0 ]] && t3=$((t3+1000))
t3=$(echo "scale=3; $t3/1000"|bc)
echo $t3

答案 1 :(得分:0)

在将两个时间戳转换为毫秒值后,您可以使用awk数学计算2个时间戳中的差异:

t1=04:13:32.234
t2=04:13:32.258
awk -F '[ :.]+' '{
     t1=($1*60*60 + $2*60 + $3)*1000 + $4
     t2=($5*60*60 + $6*60 + $7)*1000 + $8
     print (t2-t1)/60}' <<< "$t1 $t2"
0.4

用于转化的公式:

timestamp value (ms) = (hour * 60 * 60 + minute * 60 + second ) * 1000 + milli-second