如何在脚本中将日期从Unix时间转换为字符串?

时间:2012-03-23 00:08:16

标签: bash

要将日期从字符串转换为Unix时间,我可以使用date --date "2012-02-13" +%s

我如何做相反的事情,从Unix时间到字符串?

4 个答案:

答案 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()

接口的任何其他工具
相关问题