2014-01-31 83 views
0

我試圖將存儲在變量中的日期轉換爲unix時間戳。我有價值,我必須提供這個值的格式(「%m%d%Y」),然後轉換它(「%s」)。你能給我一個提示嗎?將日期存儲的變量轉換爲unix時間BASH

>initial_date=02012014 
>date_2_unixtime=`date +"%m%d%Y" -d $initial_date +"%s"` 
date: extra operand `+%s' 
Try `date --help' for more information. 

謝謝

回答

0

你的日期是在mmddyyyy,它需要在yyymmdddate解釋。你也不提供輸入日期格式到日期命令。格式僅用於顯示目的。

使用這種方式:

initial_date=02012014 
dt="${initial_date:4}${initial_date:0:4}" 
date +"%s" -d "$dt" 
1391230800 
+0

是,爲什麼你的輸出是'1391230800'代替'1391209200'我很好奇? – Kent

+0

@Kent:Timezone offset :)我的時鐘設置爲UTC,距離UTC UTC時間6小時。 – anubhava

+2

@Kent,我想anubhava來自未來:) – fedorqui

0

的問題是,你有你的initial_date轉換成date識別的格式。不幸的是,它不是其中之一。

kent$ date -d "02012014" 
date: invalid date ‘02012014’ 

如果你喜歡的一個內膽,你可以嘗試:

date -d $(sed -r 's#(..)(..)(....)#\1/\2/\3#' <<<$initial_date) +%s 
1391209200 
+0

你是指'\ 3 \ 2 \ 1'嗎? –

+0

'1/2/3'和'321'均可工作@glennjackman – Kent

+0

作品完美。上帝保佑你們 ! – user3253335

相關問題