Mam znacznik czasu UNIX i chciałbym uzyskać sformatowaną datę (np. Wynik date
) odpowiadającą temu znacznikowi czasu.
Moje dotychczasowe próby:
$ 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'
Chciałbym móc uzyskać dane wyjściowe takie jak:
$ TZ=UTC somecommand 1282368345
Sat Aug 21 05:25:45 UTC 2010
command-line
Umang
źródło
źródło
info coreutils date
trochę uważniej.date -r 1447264553943
wynika z tegoWed Dec 28 01:39:03 BRST 47831
, kiedy faktycznie jest11/11/2015, 3:55:53 PM GMT-2:00
.Po pewnym googlowaniu znalazłem sposób, aby to zrobić tylko za pomocą
date
polecenia:źródło
date -d @xxx
nie zostało dodane aż do coreutils 5.3 w 2005 roku. Tak właśnie musiałeś to zrobić wcześniej.Ten perl-one-liner zrobi to:
źródło
Z wbudowanymi powłokami:
zsh
(4.1.1 (2003) i wyżej):ksh93
(ksh93i
(2000) i wyżej):bash
(4.2 (2010) i wyżej):We wszystkich zamień
%c
nastrftime()
żądany format.źródło
bash
printf
rozwiązania?printf
w gnu.org/software/bash/manual/bashref.html#Bash-Builtins .Na OSX, aby mieć w UTC
źródło
Kolejny zgrabny przykład bogatego dziedzictwa współczesnego Uniksa. Jest to rzeczywiście możliwe w przypadku większości wariantów BSD:
(BTW twój przykład wydaje się być wyłączony o jedną sekundę)
źródło
Odpowiedz na stare pytanie, ale myślę, że może to być poprawa, jeśli ktoś tego szuka. Ta funkcja Bash działa zarówno w systemie Linux, jak i OS X. Nie testowałem na żadnym innym systemie BSD. Podaj czas epoki jako argument dla tej funkcji, a wypisze format czasu RFC-3339.
źródło