簡體   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