如何使用日期找到下一个小时的秒数?我知道我能做到
date -d "next hour"
但这只会使当前时间增加 1 小时。我希望它显示下一个完整小时的秒数。例如,如果当前时间是 9:39am
我想找到到 10am
最佳答案
现在的纪元时间戳是
now=$(date '+%s')
下一个小时是
next=$(date -d $(date -d 'next hour' '+%H:00:00') '+%s')
到下一个小时的秒数是
echo $(( next - now ))
对于连续的解决方案,使用函数:
now() { date +%s; }
next() { date -d $(date -d "next ${1- hour}" '+%H:00:00') '+%s'; }
现在你有
echo $(( $(next) - $(now) ))
甚至
echo $(( $(next day) - $(now) ))
另一种方式
另一种稍微数学化的方法仍然使用纪元时间戳。我们知道它是从一个小时开始的,所以时间戳 mod 3600 仅在该小时等于零。因此
$(( $(date +%s) % 3600 ))
是自上一小时以来的秒数,
$(( 3600 - $(date +%s) % 3600 ))
是到下一个秒数。
关于Linux date 命令,找到下一个小时的秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27595758/