我需要知道是否有一个命令可以显示 X 秒后的时间。
就我而言:我经常需要设置“睡眠(秒)”;在终端中之前和其他后续命令之间(用 ; 分隔),并且很高兴看到之后的时间(秒)。
我知道这个命令:date -d@(秒) -u +%H:%M:%S。但这只显示了持续时间,所以它是一个转换。这是一种妥协,但不完全是我所需要的。
我希望我解释得可以理解并且有人可以帮助我^^
提前致以最诚挚的问候和感谢
您可以使用
$((a + b))
对当前时间戳(以秒为单位)与即将到来的睡眠延迟(以秒为单位)进行求和。
然后,您的初始命令将转换为:
date -d@$((timestamp + 10)) -u +%H:%M:%S
最终命令可能如下所示:
date -d@$((`date +%s` + 60)) -u +%H:%M:%S
编辑:根据这个答案下面的OP评论,“为什么我必须添加 3600 因为过去没有时间戳?”
这是由于您的系统本地化造成的。事实上,在命令的一部分中,您可以获取自 1970 年以来的总经过秒数……关于您的本地时间,而在另一部分中,您可以参考 UTC 打印时间戳。
由于您所在地区可能是 UTC+1,这解释了为什么您必须再添加一小时(3600 秒)。
您可以使用系统的本地版本:
date -d@$((`date +%s` + 60)) +%H:%M:%S
这里显示的另一个答案非常脆弱,解析日期在夏令时调整时特别容易出错,但显然它甚至存在时区问题(正如那里的海报所说要添加 3600)。
幸运的是,
date
具有对日期进行简单算术的内置功能。例如。查看从现在起 30 秒后的时间戳:
date -d '+30 seconds'
它可以理解诸如
tomorrow
、years
、days
、hours
等单词,并且您可以级联加法和减法,因此使用起来非常简单直观。您甚至可以从特定的时间戳开始并从那里开始算术(而不是从默认的now开始),例如
date -d '2024/01/01 - 1 day'
等等。
像往常一样,可以在以
+
开头的参数中指定输出格式。