명령 줄에서 UNIX 타임 스탬프의 형식이 지정된 날짜를 가져 오려면 어떻게해야합니까?

UNIX 타임 스탬프가 있고 형식이 지정된 날짜를 얻고 싶습니다 (예 : 해당 타임 스탬프에 해당하는 date)의 출력입니다.

지금까지 시도한 횟수 :

$ date +%s 1282367908 $ date -d 1282367908 date: invalid date `1282367908" $ date -d +1282367908 date: invalid date `+1282367908" $ date +%s -d +1282367908 date: invalid date `+1282367908" 

다음과 같은 출력을 얻고 싶습니다.

$ TZ=UTC somecommand 1282368345 Sat Aug 21 05:25:45 UTC 2010 

답변

Mac OS X 및 BSD :

$ date -r 1282368345 Sat Aug 21 07:25:45 CEST 2010 $ date -r 1282368345 +%Y-%m-%d 2010-08-21 

GNU 핵심 도구 (정보 파일을 자세히 살펴 봐야 함) :

$ date -d @1282368345 Sat Aug 21 07:25:45 CEST 2010 $ date -d @1282368345 --rfc-3339=date 2010-08-21 

둘 중 하나를 사용하여 -u (표준) 옵션을 추가하거나 TZ=UTC0 환경 변수 (TZ=UTC0는 UTC에서 오프셋이 0 인 UTC라는 시간대를 정의 합니다. TZ=UTC (오프셋 없음)의 동작은 지정되지 않은 반면 (대부분의 시스템에서는 시스템 정의 시간대는 UTC로부터 오프셋 0으로 UTC라고도합니다.)

댓글

  • 시간이 많이 걸립니다. 이러한 일반적인 작업에는 놀라운 일입니다.
  • 감사합니다. 답변을 수락했습니다. info coreutils date를 좀 더주의 깊게 읽었어야합니다.
  • 이것은 약간 다른 날짜를 제공합니다. date -r 1447264553943 결과 Wed Dec 28 01:39:03 BRST 47831에서 ' 실제로는 11/11/2015, 3:55:53 PM GMT-2:00입니다.
  • @falmp : 마이크로 초 대신 초를 사용하면 작동합니다.
  • @hop ops는 연도를 47831로 계산해야했지만 그 수가 너무 많아서 놓쳤습니다. 감사합니다!

Answer

이 Perl One-liner가 수행합니다.

$ perl -e "print scalar localtime $ARGV[0]" 1282367908 Sat Aug 21 09:18:28 2010 

답변

인터넷 검색을 한 후 명령 만 해당 :

$ date --date "Jan 1, 1970 00:00:00 +0000 + 1282367908 seconds" Sat Aug 21 09:18:28 MSD 2010 

댓글

  • 감사합니다. 나는 거기에 ' 더 간단한 것이 있기를 바랐습니다. 그래서 지금은 찬성 투표를하세요.
  • Google이 당신을 바보로 만드는 또 다른 좋은 예입니다. 아무도 더 이상 문서를 읽지 않습니까?
  • @hop, date -d @xxx에 대한 지원은 2005 년 coreutils 5.3까지 추가되지 않았습니다. 그 ' 이전에해야했던 방식입니다.
  • @St é phaneChazelas : a)이 답변은 2010 년의 것입니다. b) 왜 이렇게합니까? 문서를 읽기 전에 인터넷 검색을 해주시겠습니까? 자신의 권위에서 대답하면 이런 오류를 범하는 것은 용서할 수 있지만, 어차피 찾아봐야한다면 바로 찾아보세요.
  • @hop, 그렇지 않다는 점을 지적했습니다. 어리석은 대답, 구식 일뿐입니다.

답변

쉘 내장 :

  • zsh (4.1.1 (2003) 이상) :

    $ zmodload zsh/datetime $ TZ=UTC0 strftime %c 1282368345 Sat 21 Aug 2010 05:25:45 UTC 
  • ksh93 (ksh93i (2000) 이상) :

    $ TZ=UTC0 printf "%(%c)T\n" "#1282368345" Sat Aug 21 05:25:45 2010 
  • bash (4.2 (2010) 이상) :

    $ TZ=UTC0 printf "%(%c)T\n" 1282368345 Sat 21 Aug 2010 05:25:45 UTC 

모든 항목에서 %c를 원하는 strftime() 형식으로 바꾸세요.

댓글

답변

OSX에서 UTC 기준

date -r "1475737200" -u 

댓글

  • 감사합니다. ' 정보를 더 쉽게 사용할 수 있도록 수락 된 답변에서 수정했습니다.

답변

오래된 질문에 대한 답변이지만 다른 사람이이 질문을 검색하면 개선 될 수 있다고 생각합니다. 이 Bash 기능은 Linux와 OS X 모두에서 작동합니다. 다른 BSD 시스템에서는 테스트하지 않았습니다. 에포크 시간을이 함수에 인수로 전달하면 RFC-3339 시간 형식이 인쇄됩니다.

epochtorfc3339 () { RFC3339_FORMAT="+%FT%T:::%z" EPOCH=$(echo $@ | sed -n "s/.*\([0-9]\{10\}\).*/\1/p"); if date --version >/dev/null 2>/dev/null; then # Linux date ${RFC3339_FORMAT} -d "1970-01-01 UTC ${EPOCH} seconds" #date -d @${EPOCH} --rfc-3339=seconds else # OS X/BSD date -r ${EPOCH} ${RFC3339_FORMAT} fi } 

Answer

현대 Unix의 풍부한 유산에 대한 또 다른 깔끔한 예입니다. 이것은 실제로 대부분의 BSD 변형에서 가능합니다.

$ TZ=UTC date -r 1282368345 Sat Aug 21 05:25:45 UTC 2010 

(귀하의 예제는 1 초 차이가 나는 것 같습니다)

댓글

  • Linux에서 작동하지 ' 않습니다. hop '의 답변에 올바른 Linux 답변이있는 것 같습니다. 지적 해 주셔서 감사합니다. 그런 일이 일어날 것 같았습니다. ' 지금 45 초가되었습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다