Unixtimeで過去1時間の時間を秒単位で生成する方法は?

Unixtimeで過去1時間の時間を秒単位で生成する方法は?

前回のunixtime秒を生成する方法があるかどうか疑問に思います。したがって、タイムスタンプは3600です。クイック日付コマンドがありますか?

答え1

職業のようですseq

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

または、「date」が 2 回実行されて発生する競合状態を回避するには、次の手順を実行します。

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

(3599は「3600タイムスタンプ」を取得します)

答え2

POSIX的に:

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

srand()興味深いことに、これは伝統的に値なしで呼び出されたときに現在の時間が使用されるという事実に基づいています。これはPOSIXで指定されていますが、エポック秒を使用するように明示的に言及しません。POSIXの説明を要求します。おそらく実装では、擬似乱数ジェネレータをシードするために、より良いエントロピーソースを使用できますが、彼らはUNIX時代の時間を求めることにしました。したがって、上記のコードは当分の間動作を保証する必要があります(例外的に現在OpenBSDでは動作しませんawk)。

関連情報