![自某个日期以来的秒数、分钟数和小时数](https://linux22.com/image/998735/%E8%87%AA%E6%9F%90%E4%B8%AA%E6%97%A5%E6%9C%9F%E4%BB%A5%E6%9D%A5%E7%9A%84%E7%A7%92%E6%95%B0%E3%80%81%E5%88%86%E9%92%9F%E6%95%B0%E5%92%8C%E5%B0%8F%E6%97%B6%E6%95%B0.png)
我想创建一个脚本,告诉您自某个日期以来已经过去了多少秒、多少分钟和多少小时(与+%s
date
命令格式非常相似)。如何用特定日期减去当前日期?例如:自 1776 年 7 月 4 日以来已经过去了多少秒、多少分钟和多少小时。
答案1
以下是一种方法:
time=$(($(date -d"1776-07-04 00:00:00" +%s) - $(date +%s)))
设置一个time
变量,你可以像这样使用:
echo $time
-7595723059
格式化的+%s
提示有助于我们在几秒钟内完成数学运算。date
seconds 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
免责声明:我是该软件包的作者。