Bash 符合ISO-8601标准的两个日期之间的时差(小时)
我有两个日期都是符合ISO-8061标准的日期格式Bash 符合ISO-8601标准的两个日期之间的时差(小时),bash,date,date-arithmetic,iso8601,Bash,Date,Date Arithmetic,Iso8601,我有两个日期都是符合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')))" 但它不起作用。有什么好办法解决这个问题吗 我会使用这些工具 然后答案变成: >datediff 2019-02-14
echo $START
2019-02-14T16:09:13Z
echo $END
2019-02-14T19:43:12Z
现在我想找出两者之间的时差。我更喜欢以小时为单位的差异
我尝试的是:
echo "$(($(date -d "$START" '+%s') - $(date -d "$END" '+%s')))"
但它不起作用。有什么好办法解决这个问题吗 我会使用这些工具
然后答案变成:
>datediff 2019-02-14T16:09:13Z 2019-02-14T19:43:12Z-f“%H小时”
3小时
我会使用这些工具
然后答案变成:
>datediff 2019-02-14T16:09:13Z 2019-02-14T19:43:12Z-f“%H小时”
3小时
输出:
3
3
输出:
3
3
在使用内置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
3
类似于@Cyrus的转换为epoch first的方法。在macOS上使用内置BSD
日期
需要更详细的解决方案:
echo "$((($(date -jf '%Y-%m-%dT%H:%M:%SZ' "$END" '+%s') - \
$(date -jf '%Y-%m-%dT%H:%M:%SZ' "$START" +%s))/3600 ))"
输出:
3
3
类似于@Cyrus的“先转换为大纪元”的方法。比我先转换为大纪元,比我先转换为大纪元,比我先转换为大纪元