用Linux shell 计算两个时间差

用Linux shell 计算两个时间差,第1张

start=`date +%s -d "2011-11-28 15:55:37"`

end=`date +%s -d "2011-11-28 15:55:52"`

echo $(($end-$start))

这个前提是你能拿到开始和结束时间字串的基础上的。

如果你的日志文件输出格式是上述的话,还有个方法:

cat 日志文件 | awk '/^000/{

start=$2 " " $3

end=$4 " " $5

stm=mktime(gensub(/[:-]/, " ", "g", start))

etm=mktime(gensub(/[:-]/, " ", "g", end))

print $1 " - " etm-stm

}'

装完win7和Linux双系统后,进入Linux后再进入Windows,你会惊奇的发现时间不对了,差了有8个小时。 导致这样的原因是Winows和 Linux 对硬件时间的处理方法不同,Windows将硬件时间作为本地时间,而Linux则将硬件时间处理为UTC时间。因此在中国UTC+8时区的情况下使用 Windows 和 Linux 会有八个小时的差异。 解决方案: Linux命令: hwclock可以查看硬件时间, timedatectl可以查看本地时间、UTC时间、时区、是否开启时间同步等信息。 思路: 将两个系统对硬件时间的处理统一化,统一将硬件时间做为本地时间。 Windows时间不做处理,在Linux下处理时间 timedatectl set-local-rtc命令可以将硬件时间 设置为本地时间或UTC时间 如果经过上述设置之后时间显示不正确了,可以通过下列命令同步时间。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8454586.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存