2015-09-25 39 views
0

我有一個YYYYYMMDDHHMMSS格式的時間戳變量。使用這個變量,我需要繼續檢查一個循環是否時間超過了1小時。korn shell中兩個時間戳之差(小時)

該變量實際上是這樣的格式123-20150925084520我需要提取第二部分作爲時間戳,然後與當前時間戳進行比較以查看小時數。像datediff($date1,$date2,"h")

這是我的嘗試。登錄到膩子下 用戶名@主機:[ahome /用戶名] $下面從這個SOPOst

$ echo $((($(date -ud '2003-08-02 17:24:33' +'%h') - $(date -ud '2003-04-21 22:55:02' +'%h'))/60/60/24)) days 

試圖賦予date : illegal option --d

我沒有看到--D選項,但我刪除-ud和嘗試。給出date: bad conversion

其他選項正在實現複雜的邏輯來10秒的代碼行。像我這樣的unix新手需要幾天才能理解邏輯。任何快速的幫助,將不勝感激。

+0

你試過了什麼?所以。不是免費的編碼服務。你需要展示你的工作,最好是作爲一個測試用例,人們可以剪切/粘貼到他們的終端(在ksh的情況下)。你也應該包括你期望的輸入。在S.O上發佈了許多功能。在ksh做日期計算。你有沒有試過尋找它們?對不起,但祝你好運。 – shellter

+0

http://unix.stackexchange.com/questions/24626/quickly-calculate-date-differences – SriniV

+0

也試過這個鏈接。但出現一些錯誤。結束使用unix時間獲得秒數並減去它(同一篇文章中的答案之一)來獲得小時數。謝謝 – xGen

回答

1

這裏找到一個簡單的解決方案。

$STARTTIME=20150925061225 
    ENDTIME=$(date '+%Y%m%d%H%M%S') #20150925090000 
    TIMEDIFF=`expr $ENDTIME - $STARTTIME` 
    echo $TIMEDIFF # returns 28775(2 hours) 
    if [ TIMEDIFF -gt 50000 ];   # Is diff. Greater than 5 hours?