2016-08-18 155 views
1

我具有人可讀的時間作爲使用外殼腳本

08-18-2016 09:18:25 

我希望它使用外殼腳本轉換成信號出現時間轉換人類可讀的時間到EPOCH。

我試着用date "+%s"但我得到的錯誤

日期:無效日期'2016年8月18日9時32' 分42秒

+0

epoch含義自1970年1月1日以來的秒數? – fedorqui

+0

輸出應該是'1471511905' –

+0

您是否知道'date -d「...您的日期...」「+%s」'? – fedorqui

回答

2

爲datetime轉換爲規範的方法時代是使用:

date "+%s"     # for this moment's date 
date -d" some date" "+%s"  # for a specific date 

然而,在這種情況下,格式不正確:

$ date -d"08 18 2016 09:18:25" "+%s" 
date: invalid date ‘08 18 2016 09:18:25’ 

然後,您需要在將字符串傳遞到date -d之前對其進行按摩。

這兩個第一空間轉換成斜線:

$ sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25" 
08/18/2016 09:18:25 

所以此工程:

$ date -d"$(sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25")" "+%s" 
1471504705 

或者使用變量:

$ nice_date=$(sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25") 
$ date -d"$nice_date" "+%s" 
1471504705 
+1

感謝您對fedorqui的解釋。 但是1471511905是08 18 2016 09:18:25的時代,而不是1471504705. –

+0

@MohitRane好吧,這必須與你的語言環境相關。只需在你的機器上運行它,看看輸出是什麼。 – fedorqui

+0

@MohitRane我的方法對你有用嗎? – fedorqui

0

感謝您的解釋fedorqui。但是,1471511905是劃時代的時間 08 18 2016年9時18分25秒,沒有1471504705. - 莫希特萊恩

date -u …將打印協調世界時