Linux date 命令,找到下一个小时的秒数

标签 linux bash date

如何使用日期找到下一个小时的秒数?我知道我能做到

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/

相关文章:

python - 计算文本文件中的不同单词 : different results in Shell and Python

macos - 如何格式化 date -u 以便结果包括 Mac OSX 终端 session 中的时区偏移?

java - 如何用JAVA实现Linux top命令UI?

linux - 是否有读取串行端口的特定功能?

python - 'DisabledBackend' 对象没有属性 '_get_task_meta_for'

通过 Linux CLI 执行 PHP

linux - 计算列中的出现次数并获取整行

bash - OSX 上 udev 功能的替代方案

java - 如何根据当前日期(包括java中的当前日期)获取最近三个月的第一个日期和最后一个日期?

r - 缺失值 true/false : error in loop not in one-off