it-swarm-ko.tech

명령 행에서 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
63
Umang

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 환경 변수를 전달하여 UTC 날짜 (TZ=UTC0defines UTC에서 오프셋이 0 인 UTC (오프셋이없는) TZ=UTC의 동작은 지정되지 않습니다 (대부분의 시스템에서 UTC라는 시스템 정의 시간대를 참조하지만) UTC에서 오프셋 0)).

98
user601

이 Perl 원 라이너는 다음과 같이합니다.

$ Perl -e 'print scalar localtime $ARGV[0]' 1282367908
Sat Aug 21 09:18:28 2010
6
AlexD

인터넷 검색 후 date 명령으로 만 수행하는 방법을 찾았습니다.

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

쉘 내장으로 :

  • 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() 형식으로 바꾸십시오.

5
Stéphane Chazelas

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

epochtorfc3339 ()
{
    RFC3339_FORMAT="+%FT%T:::%z"
    Epoch=$(echo [email protected] | 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
}
2
Noah Spurrier

Osx에서 UTC로

date -r "1475737200" -u
2
anyone

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

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

(BTW 귀하의 예가 1 초 정도 벗어난 것 같습니다)

1
codehead