繁体   English   中英

将时间转换为Unix时间戳

[英]Converting time to unix timestamp

我有以下时间格式

"2014-06-02T16:23:13+02:00"

我想将其转换为Unix时间戳(自1970年1月1日开始)。 对于上面的示例,该命令应返回:

1401725705

有Linux命令吗?

date -d"2014-06-02T16:23:13+02:00" +%s 

如果您有更新的GNU coreutil,它应该可以工作。 我最新测试了v8.22。

如果您使用的是像8.4这样的较旧的coreutil框。 它不起作用,您可以尝试用空格替换T date -d"2014-06-02 16:23:13+02:00" +%s使用字符串"2014-06-02 16:23:13+02:00" date -d"2014-06-02 16:23:13+02:00" +%s

已在带有coreutil 8.4 Red Hat Enterprise Linux Server release 6.5 (Santiago)上进行了测试

$>date -d"2014-06-02 16:23:13+02:00" +%s                                    
1401718993
date -d"2014-06-02T16:23:13+02:00" +%s

正如pacholik指出的那样, %s是自1970年1月1日00:00:00 UTC开始将日期转换为秒的方式。

您可以尝试以下两种方法之一(请注意-d--date=的用法,以及在引号内或外用+ %s的用法:

$ date --date="2014-06-02T16:23:13+02:00" "+%s"
1401718993

$ date --date="2014-06-02T16:23:13+02:00" +"%s"
1401718993

$ date -d"2014-06-02T16:23:13+02:00" +"%s"
1401718993

附带说明一下,您可以使用-d@TIME进行相反的操作:

$ date -d@1401718993
Mon Jun  2 14:23:13 UTC 2014

我看到您在使用T 时间指示符时遇到了问题:

$ date -d"$(sed 's/\(.*\)T\(.*\).*/\1 \2/' <<< "2014-06-02T16:23:13+02:00")" +"%s"
1401718993

sed获取字符串并删除中间的T

$ sed 's/\(.*\)T\(.*\).*/\1 \2/' <<< "2014-06-02T16:23:13+02:00"
2014-06-02 16:23:13+02:00

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM