自日期以来的秒、分和小时

6 bash scripts date

我想创建一个脚本,告诉您从某个日期开始经过了多少秒、分钟和小时(很像+%s date命令格式)。如何用特定日期减去当前日期?例如:自 1776 年 7 月 4 日以来已经过去了多少秒、分和小时。

Ter*_*nce 4

这是一种方法:

time=$(($(date -d"1776-07-04 00:00:00" +%s) - $(date +%s)))
Run Code Online (Sandbox Code Playgroud)

设置一个time可以使用的变量,如下所示:

echo $time
-7595723059
Run Code Online (Sandbox Code Playgroud)

格式化的指示有助于我们在几秒钟内完成数学计算+%sdateseconds since 1970-01-01 00:00:00 UTC

现在它也可以添加到具有相同变量的脚本中。

:~$ time=$(($(date -d"1776-07-04 00:00:00" +%s) - $(date +%s)))
:~$ printf '%dh:%dm:%ds\n' $(($time/3600)) $(($time%3600/60)) $(($time%60))
-2109923h:-12m:-55s
Run Code Online (Sandbox Code Playgroud)

如果您想要年:日:小时:分钟:自此之后的秒数,则如下所示:

printf '%dy:%dd:%dh:%dm:%ds\n' $(($time/60/60/24/365)) $(($time/60/60/24%365)) $(($time/3600%24)) $(($time%3600/60)) $(($time%60))
Run Code Online (Sandbox Code Playgroud)

这将为您提供如下输出:

:~$ time=$(($(date -d"1776-07-04 00:00:00" +%s) - $(date +%s)))
:~$ printf '%dy:%dd:%dh:%dm:%ds\n' $(($time/60/60/24/365)) $(($time/60/60/24%365)) $(($time/3600%24)) $(($time%3600/60)) $(($time%60))
-242y:-11d:-7h:-46m:-37s
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!