[英]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.