在Mac OSX - BSD上将unix纪元时间转换为人类可读日期

时间:2014-02-22 18:51:25

标签: bash date unix epoch

在我的Mac OSX上,我的bash脚本有一个纪元时间123439819723。我可以通过date -r 123439819723将日期转换为人类可读的格式,这样就可以Fri Aug 26 09:48:43 EST 5881

但我希望日期为mm/ddd/yyyy:hh:mi:ss格式。 date --date选项在我的计算机上不起作用。

5 个答案:

答案 0 :(得分:30)

你走了:

# date -r 123439819723 '+%m/%d/%Y:%H:%M:%S'
08/26/5881:17:48:43

答案 1 :(得分:9)

要使用BSD date转换UNIX纪元时间,请使用

date -j 123439819723 -f %s

-j阻止date尝试设置系统时钟,-f指定输入格式。您可以添加+<whatever>来设置输出格式,与GNU date一样。

答案 2 :(得分:3)

命令Shell

[aks@APC ~]$ date -r 1474588800
Fri Sep 23 05:30:00 IST 2016

[aks@APC ~]$ date -ur 1474588800
Fri Sep 23 00:00:00 UTC 2016

[aks@APC ~]$ echo "1474588800" | xargs -I {} date -jr {} -u
Fri Sep 23 00:00:00 UTC 2016

答案 3 :(得分:1)

在Mac OS上运行的组合解决方案。

Shell代码:

T=123439819723 
D=$(date -j -f %s  $(($T/1000)) '+%m/%d/%Y:%H:%M:%S').$(($T%1000))
echo "[$T] ==> [$D]"

输出:

[123439819723] ==> [11/29/1973:11:50:19.723]

或一行:

> echo 123439819723 | { read T; D=$(date -j -f %s  $(($T/1000)) '+%m/%d/%Y:%H:%M:%S').$(($T%1000));  echo "[$T] ==> [$D]" }
[123439819723] ==> [11/29/1973:11:50:19.723]

答案 4 :(得分:0)

在Linux(使用GNU coreutils 5.3+)的情况下,可以通过减少击键次数来实现:

date -d @1608185188
#Wed Dec 16 22:06:28 PST 2020