2个符合ISO-8601标准的日期之间的小时差

时间:2019-02-14 19:53:14

标签: bash date date-arithmetic iso8601

我有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 :(得分:1)

我会使用dateutils工具。

然后答案变为:

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

答案 1 :(得分:1)

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

输出:

3

答案 2 :(得分:0)

在使用内置BSD date的macOS上,需要更详细的解决方案:

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

输出:

3

@Cyrus的answer首先转换为时代的类似方法。