Jak przekonwertować znacznik czasu epoki na format czytelny dla człowieka na CLI? Myślę, że można to zrobić z datą, ale składnia mi umyka (inne sposoby są mile widziane).
command-line
shell
date
ksenoterracid
źródło
źródło
@
znaczydate -d @1234567890
?man date
nie wspomniał o tym ...info date
Jest dość kompletne. Wpis na28.9 Seconds since the Epoch
szczegółowo wyjaśnia @timestamp.date -d @1190000000
Zastąp 1190000000 swoją epokąźródło
Może się to przydać w przypadku aplikacji, które wykorzystują czas epoki w plikach dziennika:
źródło
Format niestandardowy z GNU
date
:Lub z GNU
awk
:Połączone pytanie SO: https://stackoverflow.com/questions/3249827/convert-from-unixtime-at-command-line
źródło
Z
bash-4.2
lub powyżej:(gdzie
%F %T
jeststrftime()
format -type)Ta składnia jest inspirowana
ksh93
.W
ksh93
Jednak argument przyjmuje się jako datę ekspresji gdzie obsługiwane są różne i trudno udokumentowane formaty.Dla epoki uniksowej składnia w
ksh93
:ksh93
wydaje się jednak, że używa własnego algorytmu dla strefy czasowej i może go pomylić. Na przykład w Wielkiej Brytanii w 1970 r. Był czas letni, ale:źródło
Jeśli czas twojej epoki jest wyrażony w milisekundach zamiast sekund, usuń ostatnie trzy cyfry przed przekazaniem go do
date -d
:To daje nieprawidłowe dane. Usuń ostatnie trzy cyfry.
źródło
Dwa, których często używam to:
i
źródło
Dzięki
zsh
możesz użyćstrftime
wbudowanego:na przykład
Są też
dateconv
zdateutils
:pamiętaj o
dateutils
domyślnych narzędziachUTC
(dodaj w-z your/timezone
razie potrzeby).źródło
Możesz także użyć małego programu C do wydrukowania daty i godziny w formacie, który może być bezpośrednio przeanalizowany przez powłokę
stosowanie:
źródło
Nie byłoby prawdziwego rozwiązania bez małego node.js:
dodaj to
~/.bash_aliases
i upewnij się, że pochodzi~/.bashrc
z. ~/.bash_aliases
Aby pobrać węzeł w systemie, musisz http://nvm.sh i uruchomić polecenie curl. Zainstaluje menedżera wersji węzła (nvm), który pozwala przełączać wersje węzła.
Po prostu wpisz
nvm ls-remote
i wybierz wersję donvm install <version>
.źródło
Jest na to łatwiejszy sposób: (([System.DateTimeOffset] :: FromUnixTimeMilliSeconds ($ unixtime)). DateTime) .ToString ("s")
źródło