web-dev-qa-db-ja.com

エポックを日付に変換して、間違った時間を表示する

日付が間違った時刻に変換されるのはなぜですか?

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

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

date -d@"$currentIndexTime"
#Tue 24 Oct 45105 10:53:10 PM GMT
46
bobbyrne01

この特定のタイムスタンプは、エポック以降のミリ秒単位であり、エポック以降の標準的な秒ではありません。 1000で割る:

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

Bash算術展開を使用して除算を実行できます。

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

value」はbash変数であり、$はオプションであることに注意してください。つまり、$valueまたはvalueを使用できます。

7
Richard Jessop

Mac OS Xの場合、date -r <timestamp_in_seconds_with_no_fractions>

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

または

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

または

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