首页 > 解决方案 > 如何获取日期/时间字符串和当前时间之间的差异?

问题描述

我在 shell 脚本变量中有一个日期时间。如何将它与当前时间戳进行比较,并找出 shell 脚本中这两个日期之间的差异分钟数?

我在 shell 脚本中拥有的变量的值类似于08/16/2019 15:34:00.

标签: shell

解决方案


要获得当前时间减去提供的时间戳的差值(使用 GNUdate和 Bash 5.0 或更高版本),您可以使用EPOCHSECONDSshell 变量和以下-d选项date

$ echo $(((EPOCHSECONDS - $(date -d '08/16/2019 15:34:00' +%s)) / 60))
19

对于早于 5.0 的 Bash,您可以使用printf '%(%s)T'代替EPOCHSECONDS

echo $((($(printf '%(%s)T') - $(date -d '08/16/2019 15:34:00' +%s)) / 60))

如果你的 Bash 早于 4.2(或任何 POSIX shell),你必须使用date两次:

echo $((($(date +%s) - $(date -d '08/16/2019 15:34:00' +%s)) / 60))

如果您没有 GNUdate及其选项,请查看Parse Date in Bash-d中的问答 :使用 解析日期/时间字符串,或在 macOS 上使用's标志。readdate-jf


推荐阅读