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

POSIX적으로:

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

srand()흥미롭게도 이는 전통적으로 값 없이 호출 될 때 현재 시간이 사용된다는 사실에 기반을 두고 있습니다 . 이는 POSIX에 의해 지정되지만 에포크 초를 사용하라고 명시적으로 언급하지는 않습니다.POSIX에 대한 설명을 요청합니다.아마도 구현에서는 의사 난수 생성기를 시드하기 위해 더 나은 엔트로피 소스를 사용할 수 있지만,그들은 UNIX 시대 시간을 요구하기로 결정했습니다., 따라서 위의 코드는 당분간 작동이 보장되어야 합니다(예외적으로 현재 OpenBSD에서는 작동하지 않습니다 awk).

관련 정보