在 bash 中显示自特定时间以来的小时数

在 bash 中显示自特定时间以来的小时数

我有一个命令,可以以我喜欢的格式输出单个日期。现在我需要一种简单的方法来计算(使用 bash)自该日期以来已经过去了多少小时(默认为yyyy-mm-dd hh:mm)。

我能想到的唯一方法是使用几个ifs,但我希望可能有一种快速的单行方法。也许使用命令date

仅举一个例子来说明:
现在是2011-05-23 12:16
第一个命令输出2011-05-22 08:34
我需要一个输出的命令(或几个管道命令)27,如:“自指定日期以来已经过去了 27 小时(四舍五入)。

有没有一种快速而简单的方法来实现这一点?或者我必须使用条件语句(虽然这不会太复杂)。

答案1

一般来说,对于 Unix 中的时间,最简单的方法是将两个日期时间转换为Unix 时间戳(即自 1970-1-1 00:00 以来的秒数),从另一个中减去一个,然后,在您的情况下,除以 3600 即可得到小时数。

SECONDS=`expr $(date -d "20110523" +%s) - $(date -d "20110522" +%s)`
expr $SECONDS / 3600

#Return is 24

相关内容