自某个日期以来的秒数、分钟数和小时数

自某个日期以来的秒数、分钟数和小时数

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

答案1

以下是一种方法:

time=$(($(date -d"1776-07-04 00:00:00" +%s) - $(date +%s)))

设置一个time变量,你可以像这样使用:

echo $time
-7595723059

格式化的+%s提示有助于我们在几秒钟内完成数学运算。dateseconds 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

如果您想要年以来的年:日:时:分:秒,则如下所示:

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))

这将给出如下输出:

:~$ 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

希望这可以帮助!

答案2

如果你可以忍受依赖关系,那么可以使用以下方式优雅地表达任务dateutils

$ datediff 1776-07-04T00:00:00 now -f '%H:%0M:%0S'
2111284:08:34

免责声明:我是该软件包的作者。

相关内容