it-swarm.com.de

Bash konvertiere Epoche auf Datum und zeige falsche Zeit an

Wie kommt es, dass das Datum auf die falsche Zeit umgestellt wird?

result=$(ls /path/to/file/File.*)
#/path/to/file/File.1361234760790

currentIndexTime=${result##*.}
echo "$currentIndexTime"
#1361234760790

date [email protected]"$currentIndexTime"
#Tue 24 Oct 45105 10:53:10 PM GMT
46
bobbyrne01

Dieser bestimmte Zeitstempel ist in Millisekunden seit der Epoche und nicht in den Standardsekunden seit der Epoche angegeben. Teilen Sie durch 1000:

$ date -d @1361234760.790
Mon Feb 18 17:46:00 MST 2013
91
andrewdotn

Sie können die Bash-arithmetische Erweiterung verwenden, um die Division durchzuführen:

date -d @$((value/1000))

Beachten Sie, dass "value" eine Bash-Variable ist, wobei $ Optional ist. es kann $value oder value verwendet werden.

7
Richard Jessop

Für Mac OS X ist es date -r <timestamp_in_seconds_with_no_fractions>

$ date -r 1553024528
Tue Mar 19 12:42:08 PDT 2019

oder

$ date -r `expr 1553024527882 / 1000`
Tue Mar 19 12:42:07 PDT 2019

oder

$ date -r $((1553024527882/1000))
Tue Mar 19 12:42:07 PDT 2019
2
Marcus