2015-09-25 2 views
0

У меня есть временная переменная в формате YYYYMMDDHHMMSS. используя эту переменную, мне нужно продолжать проверять в цикле, прошло ли время больше, чем 1 час.Разница между двумя временными метками в часах в оболочке korn

переменная на самом деле в таком формате 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 секунд строк кода. для новичков-новичков, подобных мне, потребуется несколько дней, чтобы понять логику. Любая быстрая помощь была бы оценена.

+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? 
Смежные вопросы