計算時間差

因爲做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")




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章