Bash将epoch转换为日期,显示错误的时间

bob*_*e01 48 bash date epoch

为什么日期转换到错误的时间?

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
Run Code Online (Sandbox Code Playgroud)

and*_*otn 95

此特定时间戳是自纪元以来的毫秒数,而不是自纪元以来的标准秒数.除以1000:

$ date -d @1361234760.790
Mon Feb 18 17:46:00 MST 2013
Run Code Online (Sandbox Code Playgroud)

  • 是的,这是由于时间戳以毫秒为单位。我还在这里检查了 http://epochconvert.com 并获得了正确的结果 **2013 年 2 月 19 日星期二上午 12:46:00 GMT** (2认同)

Mar*_*cus 15

对于 Mac OS X,它是 date -r <timestamp_in_seconds_with_no_fractions>

$ date -r 1553024528
Tue Mar 19 12:42:08 PDT 2019
Run Code Online (Sandbox Code Playgroud)

或者

$ date -r `expr 1553024527882 / 1000`
Tue Mar 19 12:42:07 PDT 2019
Run Code Online (Sandbox Code Playgroud)

或者

$ date -r $((1553024527882/1000))
Tue Mar 19 12:42:07 PDT 2019
Run Code Online (Sandbox Code Playgroud)


Ric*_*sop 9

您可以使用bash算术扩展来执行除法:

date -d @$((value/1000))
Run Code Online (Sandbox Code Playgroud)

请注意," value"是一个bash变量,$是可选的; 即,$valuevalue可以使用.