【发布时间】:2019-08-17 04:02:05
【问题描述】:
我在 shell 脚本变量中有一个日期时间。如何将它与当前时间戳进行比较,并找出 shell 脚本中这两个日期之间的差异分钟数?
我在 shell 脚本中拥有的变量的值类似于 08/16/2019 15:34:00。
【问题讨论】:
-
绝对的区别?或者你知道你拥有的时间戳是过去的吗?另外,你有没有尝试过,怎么没用?
标签: shell
我在 shell 脚本变量中有一个日期时间。如何将它与当前时间戳进行比较,并找出 shell 脚本中这两个日期之间的差异分钟数?
我在 shell 脚本中拥有的变量的值类似于 08/16/2019 15:34:00。
【问题讨论】:
标签: shell
要获得当前时间减去提供的时间戳的差值(使用 GNU date 和 Bash 5.0 或更高版本),您可以使用 EPOCHSECONDS shell 变量和 date 的 -d 选项:
$ 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))
如果您没有 GNU date 及其 -d 选项,请查看 Parse Date in Bash 的问答:使用 read 解析日期/时间字符串,或使用 date 的-jf macOS 上的标志。
【讨论】: