유닉스 타임 스탬프를 날짜 문자열로 변환
유닉스 타임 스탬프를 유닉스 명령 줄의 날짜로 변환하는 빠르고 간단한 방법이 있습니까?
date
각 요소 (월, 일, 년, 시간 등)를 지정하는 것이 다소 어색한 점을 제외하고는 작동 할 수 있으며 제대로 작동하는 방법을 알 수 없습니다. 더 쉬운 방법이있을 것 같습니다-뭔가 빠졌습니까?
GNU를 사용 date
하면 다음을 수행 할 수 있습니다.
date -d "@$TIMESTAMP"
# date -d @0
Wed Dec 31 19:00:00 EST 1969
(보낸 사람 : 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 -d @
. AWK 또는 다른 명령이 필요하지 않습니다 . 유닉스 타임 스탬프는 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 Timestamp를 날짜로 변환
@TomMcKenzie가 다른 답변에 대한 의견에서 언급했듯이 date -r 123456789
Unix Epoch 이후 초 단위로 주어진 시간 동안 더 일반적이고 더 널리 구현 된 간단한 솔루션이지만 불행히도 보편적으로 보장되는 휴대용 솔루션은 없습니다.
-d
시스템의 여러 유형에 대한 옵션은 GNU 날짜보다는 완전히 다른 무언가 의미 --date
확장을. 안타깝게도 GNU Date는 -r
이러한 다른 구현과 동일하게 해석하지 않습니다 . 불행히도 date
사용중인 버전을 알고 있어야 하며 많은 이전 Unix date
명령은 두 가지 옵션을 지원하지 않습니다.
더 나쁜 것은 POSIX date
는 POSIX Awk도 부족하기 때문에 명령 줄에서 유닉스 시간을 형식화하기 위해 명령을 전혀 인식하지 -d
못하고 -r
표준 방법을 제공하지 않는다는 것입니다 strftime()
. (당신은 사용할 수 없습니다 touch -t
및 ls
이전 때문에 유닉스 신기원 이후의 초로 주어진 시간을 허용하지 않습니다.)
Brian Kernighan에서 직접 사용할 수있는 One True Awk에는 이제 Unix Epoch 이후 현재 시간을 초 단위로 반환 strftime()
하는 systime()
기능 뿐만 아니라 내장 기능이 있으므로 Awk 솔루션이 가장 이식성이 뛰어납니다.
어색한 표기법을 찾으면 -R
-option이 도움이 될 수 있습니다. RFC 2822 형식으로 날짜를 출력합니다. 따라서 모든 식별자가 필요하지는 않습니다 date -d @1278999698 -R
. 다른 방법은 로케일로 날짜를 초 단위로 출력하는 것 date -d @1278999698 +%c
입니다. 기억하기 쉬워야합니다. :-)
위의 dabest1의 답변에 약간의 수정. 시간대를 GMT가 아닌 UTC로 지정하십시오.
$ date -d '1970-01-01 1416275583 sec GMT'
Tue Nov 18 00:53:03 GMT 2014
$ date -d '1970-01-01 1416275583 sec UTC'
Tue Nov 18 01:53:03 GMT 2014
두 번째는 맞습니다. 그 이유는 영국에서는 1968 년부터 1971 년까지 일광 절약이 계속해서 시행 되었기 때문이라고 생각합니다.
여기의 다른 예는 기억하기 어렵습니다. 가장 간단하게 :
date -r 1305712800
The standard Perl solution is:
echo $TIMESTAMP | perl -nE 'say scalar gmtime $_'
(or localtime, if preferred)
awk 'BEGIN { print strftime("%c", 1271603087); }'
Put the following in your ~/.bashrc :
function unixts() { date -d "@$1"; }
Example usage:
$ unixts 1551276383
Wed Feb 27 14:06:23 GMT 2019
참고URL : https://stackoverflow.com/questions/3249827/convert-unix-timestamp-to-a-date-string
'Programing' 카테고리의 다른 글
도커 컨테이너에 인터넷이 없습니다. (0) | 2020.07.25 |
---|---|
테이블의 열 수를 구합니다 (0) | 2020.07.25 |
데이터 프레임의 변수가 많은 수식을 간결하게 작성하는 방법은 무엇입니까? (0) | 2020.07.25 |
C #에서 IsNullOrEmpty와 IsNullOrWhiteSpace의 차이점 (0) | 2020.07.25 |
'var'매개 변수는 더 이상 사용되지 않으며 Swift 3에서 제거됩니다. (0) | 2020.07.25 |