date
며칠 전의 타임스탬프를 얻기 위해 이 명령을 사용하고 타임스탬프를 부여하려면 어떻게 해야 합니까 ? X
예를 들어 UTC 타임스탬프는 입니다 . 그 이전의 UTC 타임스탬프를 1525192000
가져오고 싶습니다 .30
답변1
먼저, 귀하의 타임스탬프가 1970년 1월 1일 00:00:00 UTC 이후의 초 수라고 가정합니다. 그렇지 않은 경우 해당 타임스탬프로 변환합니다.
따라서 원하는 일수에서 초를 빼야 합니다.
stamp=1525192000
day=$((60*60*24))
echo $(($stamp - 30*$day))
그런 다음 Unix epoch 시간을 얻게 됩니다. 날짜와 시간으로 변환해야 하는 경우 DST를 고려해야 할 경우 date
이 유틸리티를 사용해야 할 수 있습니다.
을 사용할 수도 있습니다 date
. 이를 통해 계산 없이 다른 날짜 요소를 쉽게 사용할 수 있습니다.
GNU 사용 date
:
date --date="$(date --iso-8601=s -d @1525192000) -30 days" +%s
예:
$ date --date="$(date --iso-8601=s -d @1525192000)"
Tue, May 1, 2018 7:06:01 PM
$ date --date="$(date --iso-8601=s -d @1525192000) -30 days"
Wed, Apr 1, 2018 7:06:01 PM
$ date --date="$(date --iso-8601=s -d @1525192000) -30 days" +%s
1523466380
$ date --date="$(date --iso-8601=s -d @1525192000) -30 days -1 week -3 months" +%s
1514309200
FreeBSD 및 macOS에서(이 -j
방법은 시스템 날짜를 설정하려고 시도하지 않으므로 안전합니다.)
date -j -f "%a %b %d %T %Z %Y" "$(date -r 1234567890)" -v-30d "+%s"
편집: 감사합니다. Kusalananda, OpenBSD 및 NetBSD에서는 지원되지 않습니다 -v
.