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