Ubuntu 终端命令:显示 X 秒后的时间?

问题描述 投票:0回答:2

我需要知道是否有一个命令可以显示 X 秒后的时间。

就我而言:我经常需要设置“睡眠(秒)”;在终端中之前和其他后续命令之间(用 ; 分隔),并且很高兴看到之后的时间(秒)。

我知道这个命令:date -d@(秒) -u +%H:%M:%S。但这只显示了持续时间,所以它是一个转换。这是一种妥协,但不完全是我所需要的。

我希望我解释得可以理解并且有人可以帮助我^^

提前致以最诚挚的问候和感谢

date time while-loop sleep gnome-terminal
2个回答
0
投票

您可以使用

$((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

0
投票

这里显示的另一个答案非常脆弱,解析日期在夏令时调整时特别容易出错,但显然它甚至存在时区问题(正如那里的海报所说要添加 3600)。

幸运的是,

date
具有对日期进行简单算术的内置功能。例如。查看从现在起 30 秒后的时间戳:

date -d '+30 seconds'

它可以理解诸如

tomorrow
years
days
hours
等单词,并且您可以级联加法和减法,因此使用起来非常简单直观。您甚至可以从特定的时间戳开始并从那里开始算术(而不是从默认的now开始),例如

date -d '2024/01/01 - 1 day'

等等。

像往常一样,可以在以

+
开头的参数中指定输出格式。

© www.soinside.com 2019 - 2024. All rights reserved.