我有以下时间格式
"2014-06-02T16:23:13+02:00"
我想将其转换为unix时间戳(自1970年1月1日起)。对于上面的示例,该命令应返回:
1401725705
是否有Linux命令?
答案 0 :(得分:4)
date -d"2014-06-02T16:23:13+02:00" +%s
如果你有一个更新的GNU coreutil,应该可以工作。我最近用v8.22进行了测试。
如果您使用的是像8.4这样的老式coreutil盒子。它不起作用,您可以尝试用空格替换T
。在"2014-06-02 16:23:13+02:00"
date -d"2014-06-02 16:23:13+02:00" +%s
这是使用Red Hat Enterprise Linux Server release 6.5 (Santiago)
coreutil 8.4
上进行测试的
$>date -d"2014-06-02 16:23:13+02:00" +%s
1401718993
答案 1 :(得分:2)
date -d"2014-06-02T16:23:13+02:00" +%s
答案 2 :(得分:0)
正如pacholik所指出的那样,%s
是自1970-01-01 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
- time designator:
$ 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