2个ISO - 8601兼容日期之间的时差

问题描述 投票:0回答:3

我有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')))"

但它不起作用。任何想法是解决这个问题的最佳方法吗?

bash date date-arithmetic iso8601
3个回答
1
投票

我会使用dateutils工具。

然后答案变成:

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

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

输出:

3

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首先转换为epoch的方法。

© www.soinside.com 2019 - 2024. All rights reserved.