要将日期从字符串转换为Unix时间,我可以使用date --date "2012-02-13" +%s
。
我如何做相反的事情,从Unix时间到字符串?
答案 0 :(得分:24)
您可以使用date --date @datetime
:
[foo@bar ~]$date --date "2012-02-13" +%s
1329055200
[foo@bar ~]$date --date @1329055200
Mon Feb 13 00:00:00 EST 2012
[foo@bar ~]$date --date @1329055200 +"%Y-%m-%d"
2012-02-13
我不确定'@xxxx'在哪里被记录!
答案 1 :(得分:5)
date
命令的选项取决于您的操作系统。
在FreeBSD中:
[ghoti@pc ~]$ date -r 1332468005 '+%Y-%m-%d %T'
2012-03-22 22:00:05
在Linux中:
ghoti@wopr$ date -d @1332468005 '+%Y-%m-%d %H:%M:%S'
2012-03-22 22:00:05
在其他操作系统中,我不知道。
如果您想要一个不依赖于date
命令的解决方案,您可以使用perl或gawk,如果它们恰好安装在您正在使用的计算机上。
ghoti@wopr$ gawk -v when=1332468005 'BEGIN{ print strftime("%Y-%m-%d %T", when); }'
2012-03-22 22:00:05
答案 2 :(得分:3)
使用--date=@
选项传递Unix时间戳,并根据所需的输出使用格式。
$ date --date "2012-02-13" +%s
1329062400
$ date --date=@1329062400 +%F
2012-02-13
答案 3 :(得分:2)
可以通过awk
:
$ date --date "2012-02-13" +%s | awk '{ print strftime("%Y-%m-%d", $1); }'
2012-02-13
或提供strftime()