운영체제/Linux

[Linux] unix Timestamp 를 date로 변환

louky 2022. 11. 22. 15:42
반응형

unix timestamp를 date format으로 변경하는 방법이다. 

 

unix timestamp가 필자가 겪은 봐로는 숫자 11자리여야 하는데.... 11자리 이상으로 구성되어 있는 unix timestamp도 있다. 

이때 숫자 자릴수를 확인 한다음에 11자리로 맞추어 준다. 

 

아래 예제는 unix timestamp가 숫자 11자리가 아닌 17자리일때에 대한 예제이다.

timestamp 자릿수가 11자리이면 변환없이 바로 format만 변환하면 된다. 

 

17 -> 11자리로 변환

SHELL) $ echo "1635927075423743" | wc -c
17
SHELL) $ echo "$((1635927075423743 / 1000 / 1000))" | wc -c
11

 

 unix timestamp -> date  format 

Usage) date -d @$(({TIMESTAMP_VALUE} / 1000 / 1000)) +'%Y-%m-%d %H:%M:%S'
(ex) $  date -d @$((1635927075423743 / 1000 / 1000)) +'%Y-%m-%d %H:%M:%S'
2021-11-03 17:11:15

 

date format을 unix timestamp foramt으로는 아래와 같이 변경이 가능하다.

linux에서는 기본적으로 11자리로 출력이 된다. 

[ user_name@hostname ] # date +"%s"
1669104062

 

 

** python으로 변환 방법 

USAGE) python -c \
'from datetime import datetime
print(datetime.fromtimestamp(int({TIMESTAMP_VALUE} / 1000 / 1000)).strftime("%Y-%m-%d %H:%M:%S"))'


(ex) $  python -c \
 'from datetime import datetime
 print(datetime.fromtimestamp(int(1635927075423743 / 1000 / 1000)).strftime("%Y-%m-%d %H:%M:%S"))'
2021-11-03 17:11:15

반응형