计算时间差

因为做kettle数据抽取,常常要知道执行消耗了多少时间,而自己对shell只是知道一些基础的东西,于是网上查资料,顺便进行下总结:

思路:

1.将时间date转变为时间戳(即从1970-01-01 00:00:00 开始算起的秒数)

2.时间戳之间就可以直接进行运算了

3.运算得到的结果是秒,可以进一步运算除以60去得到分钟,小时,天数等

3.1.也可以将秒转化为date型:$(date +%Y-%m-%d' '%H:%M:%S -d "1970-01-01 UTC $t1 seconds"),注意,这里得到的是从1970年开始算起的日期,要算实际消耗的年月日,对1970-01-01进行运算便可


#!/bin/bash

_time1=$(date +%Y-%m-%d' '%H:%M:%S -d "2015-08-31 01:01:10")
_time2=$(date +%Y-%m-%d' '%H:%M:%S -d "2016-07-30 09:38:30")

echo $_time1
echo $_time2

#得到时间戳
t1=$(date +%s -d "$_time1")
t2=$(date +%s -d "$_time2")

echo t1
echo t2
echo $(($t2-$t1))

#得到时间差
t3=$(($t2-$t1))

#将时间戳转换为常规日期显示
t4=$(date +%Y-%m-%d' '%H:%M:%S -d "1970-01-01 UTC $t3 seconds")
echo $t4

#得到年-月-日,时:分:秒
ydate=$(date +%Y -d "$t4")
mdate=$(date +%m -d "$t4")
ddate=$(date +%d -d "$t4")
htime=$(date +%H -d "$t4")
mtime=$(date +%M -d "$t4")
stime=$(date +%S -d "$t4")

_year=$(($ydate-1970))
_month=$(($mdate-1))
_day=$(($ddate-1))

echo "start time $_time1"
echo "end time $_time2"

#输出最终想要的格式
echo $_year-$_month-$_day' '$(date +%H:%M:%S -d "1970-01-01 UTC $t3 seconds")




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值