如何在unixtime中以秒为单位生成最近1小时的时间?

如何在unixtime中以秒为单位生成最近1小时的时间?

我想知道是否有一种方法可以生成过去一小时的 unixtime 秒数。所以 3600 个时间戳。有没有快速日期命令?

答案1

看起来像是一份工作seq

seq "$(( $(date +%s) - 3599 ))" "$(date +%s)"

或者避免由于“date”被执行两次而导致的竞争条件:

NOW=$(date +%s); seq "$(( NOW - 3599 ))" "$NOW"

(3599 是这样你就可以得到“3600 个时间戳”)

答案2

POSIXly:

awk '
  BEGIN {
    srand(); now = srand()
    for (i = now - 3599; i <= now; i++) print i
  }'

有趣的是,这是基于这样一个事实:传统上,当在srand()没有值的情况下调用时,会使用当前时间。这是 POSIX 指定的,但没有明确指出要使用纪元秒。我要求 POSIX 澄清也许允许实现使用更好的熵源来为伪随机生成器提供种子,但是他们选择要求使用 UNIX 纪元时间,因此上面的代码应该保证在未来一段时间内可以工作(作为例外,它目前不适用于 OpenBSD awk)。

相关内容