korn shell中2个时间戳的小时差异

时间:2015-09-25 02:12:57

标签: unix ksh

我有一个YYYYYMMDDHHMMSS格式的时间戳变量。使用这个变量我需要继续检查循环是否超过1小时。

该变量实际上采用的格式为123-20150925084520,我需要将第二部分提取为时间戳,然后与当前时间戳进行比较以查看小时数。像datediff($date1,$date2,"h")

这样的东西

这是我尝试过的。登录PUTTY并在 username @ host:[ahome / username] $在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新手需要几天才能理解逻辑。任何快速帮助将不胜感激。

1 个答案:

答案 0 :(得分: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?