两个 ISO - 8601 兼容日期之间的时差(以小时为单位)
Time difference in hours between 2 ISO - 8601 compliant dates
我有 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')))"
但是不行。任何想法什么是解决这个问题的最佳方法?
我会使用 dateutils 工具。
那么答案就变成了:
> datediff 2019-02-14T16:09:13Z 2019-02-14T19:43:12Z -f "%H hours"
3 hours
echo "$((($(date -d "$END" '+%s') - $(date -d "$START" '+%s'))/60/60))"
输出:
3
在使用内置 BSD 的 macOS 上 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 的 方法类似,首先转换为纪元。
我有 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')))"
但是不行。任何想法什么是解决这个问题的最佳方法?
我会使用 dateutils 工具。
那么答案就变成了:
> datediff 2019-02-14T16:09:13Z 2019-02-14T19:43:12Z -f "%H hours"
3 hours
echo "$((($(date -d "$END" '+%s') - $(date -d "$START" '+%s'))/60/60))"
输出:
3
在使用内置 BSD 的 macOS 上 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 的