답변:
GNU를 사용 date
하면 다음을 수행 할 수 있습니다.
date -d "@$TIMESTAMP"
# date -d @0
Wed Dec 31 19:00:00 EST 1969
(From : BASH : Unix 타임 스탬프를 날짜로 변환 )
OS X에서는 date -r
.
date -r "$TIMESTAMP"
또는 strftime()
. 셸에서 직접 사용할 수는 없지만 gawk 를 통해 액세스 할 수 있습니다 . %c
지정 로케일에 의존하는 방식으로 타임 스탬프를 표시합니다.
echo "$TIMESTAMP" | gawk '{print strftime("%c", $0)}'
# echo 0 | gawk '{print strftime("%c", $0)}'
Wed 31 Dec 1969 07:00:00 PM EST
date -d @1278999698 +'%Y-%m-%d %H:%M:%S'
뒤에 @
있는 숫자는 초 단위의 숫자입니다.
date -r 1278999698 +'%Y-%m-%d %H:%M:%S'
(GMT) 또는 간단히date -r 1278999698
이 솔루션은 date -d @
. AWK 또는 기타 명령이 필요하지 않습니다 . Unix 타임 스탬프는 1970 년 1 월 1 일 UTC 이후의 초 수이므로 UTC를 지정하는 것이 중요합니다.
date -d '1970-01-01 1357004952 sec UTC'
Mon Dec 31 17:49:12 PST 2012
Mac을 사용하는 경우 다음을 사용하십시오.
date -r 1357004952
시대를 얻기위한 명령 :
date +%s
1357004952
Anton의 크레딧 : BASH : Unix 타임 스탬프를 날짜로 변환
@TomMcKenzie가 다른 답변에 대한 의견에서 말했듯이, date -r 123456789
이 Unix Epoch 이후 몇 초 동안 주어진 시간 동안 더 일반적으로 (즉 더 널리 구현 된) 간단한 솔루션이지만 불행히도 보편적으로 보장되는 휴대용 솔루션은 없습니다.
-d
시스템의 여러 유형에 대한 옵션은 GNU 날짜보다는 완전히 다른 무언가 의미 --date
확장을. 슬프게도 GNU Date는 -r
이러한 다른 구현과 동일하게 해석하지 않습니다 . 안타깝게도 어떤 버전을 date
사용 하고 있는지 알아야합니다.date
명령이 두 옵션 중 하나를 지원하지 않습니다.
설상가상으로 POSIX 는 명령 줄에서 Unix 시간을 형식화하기 위해 (내가 알고있는) 명령에서 표준 방법을 전혀 date
인식하지도 제공 하지도 -d
않으며 -r
제공 하지도 않습니다 (POSIX Awk에도 strftime()
. (당신은 사용할 수 없습니다 touch -t
및ls
이전 때문에 유닉스 신기원 이후의 초로 주어진 시간을 허용하지 않습니다.)
Brian Kernighan에서 직접 사용할 수있는 The One True Awk에는 이제 Unix Epoch 이후 현재 시간을 초 단위로 반환 strftime()
하는 systime()
함수 뿐만 아니라 함수가 내장 되어 있으므로 Awk 솔루션이 가장 이식성이 뛰어납니다.