![在 bash 中显示自特定时间以来的小时数](https://linux22.com/image/1075456/%E5%9C%A8%20bash%20%E4%B8%AD%E6%98%BE%E7%A4%BA%E8%87%AA%E7%89%B9%E5%AE%9A%E6%97%B6%E9%97%B4%E4%BB%A5%E6%9D%A5%E7%9A%84%E5%B0%8F%E6%97%B6%E6%95%B0.png)
我有一个命令,可以以我喜欢的格式输出单个日期。现在我需要一种简单的方法来计算(使用 bash)自该日期以来已经过去了多少小时(默认为yyyy-mm-dd hh:mm
)。
我能想到的唯一方法是使用几个if
s,但我希望可能有一种快速的单行方法。也许使用命令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