【问题标题】:How can I get the difference between a date/time string and the current time?如何获取日期/时间字符串和当前时间之间的差异?
【发布时间】:2019-08-17 04:02:05
【问题描述】:

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

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

【问题讨论】:

  • 绝对的区别?或者你知道你拥有的时间戳是过去的吗?另外,你有没有尝试过,怎么没用?

标签: shell


【解决方案1】:

要获得当前时间减去提供的时间戳的差值(使用 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 上的标志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多