Разница во времени между 2 стандартами ISO - 8601 - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть 2 даты в формате даты, соответствующем ISO - 8061.

echo $START
2019-02-14T16:09:13Z

echo $END
2019-02-14T19:43:12Z

Теперь я хочу найти разницу во времени между ними.Я предпочел бы разницу в часах.

То, что я пробовал, это:

echo "$(($(date -d "$START" '+%s') - $(date -d "$END" '+%s')))"

Но это не работает.Есть идеи, что лучший способ решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019
echo "$((($(date -d "$END" '+%s') - $(date -d "$START" '+%s'))/60/60))"

Выход:

3
0 голосов
/ 15 февраля 2019

В macOS с использованием встроенного BSD date требуется более подробное решение:

echo "$((($(date -jf '%Y-%m-%dT%H:%M:%SZ' "$END" '+%s') - \
    $(date -jf '%Y-%m-%dT%H:%M:%SZ' "$START" +%s))/3600 ))"

Вывод:

3

Подобный подход к ответу @ Cyrus's преобразования в эпоху первыми.

0 голосов
/ 14 февраля 2019

Я бы использовал инструменты dateutils .

Тогда ответ будет:

> datediff 2019-02-14T16:09:13Z 2019-02-14T19:43:12Z -f "%H hours"
3 hours
...