2015-04-04 465 views
0

如何將日期變量轉換爲秒?如何將結果/ bin /日期「%Y-%m-%d%H:%M:%S」轉換爲秒?

我定義了一個名爲CDATE變量是這樣的:

CDATE=$(/bin/date +"%Y-%m-%d %H:%M:%S") 

CDATE輸出示例:「2012年12月12日12時12分十二秒」

我想將其轉換爲時間秒並將其保存在另一個變量中。

+1

你這是什麼意思_我需要CDATE_?你想覆蓋變量嗎? – 2015-04-04 12:06:46

+0

例如CDATE變量存儲2012:12:12 12:12:12。我想在幾秒鐘內轉換這個結果並存儲在另一個變量中。 – 2015-04-04 12:11:52

回答

2
x=($(date +"%Y-%m-%d %H:%M:%S %s")) 
CDATE="${x[0]} ${x[1]}" 
secs="${x[2]}"  # seconds since 1970-01-01 00:00:00 UTC 
echo $CDATE 
echo $secs 

輸出:

 
2015-04-04 14:13:08 
1428149588 
+0

它真的幫助我。謝謝 – 2015-04-04 12:18:51

1

如果不收取CPU時間的話,我會打電話date兩次,以使其更易於閱讀:

# get the timestamp: 
timestamp=$(date +"%s") 

# format it: 
CDATE=$(date -d @"$timestamp" +"%Y-%m-%d %H:%M:%S") 

echo "$CDATE" 
echo "$timestamp" 
1

在Linux上:

CDATE=$(date "+%Y-%m-%d %H:%M:%S") 
SECONDS=$(date -d "$CDATE" +%s) 

在Mac上:

CDATE=$(date "+%Y-%m-%d %H:%M:%S") 
SECONDS=$(date -j -f "%Y-%m-%d %H:%M:%S" "$CDATE" +%s) 

而且,這兩個變量的內容(在兩種情況下):

$ echo "$CDATE" 
2015-04-04 16:24:41 

$ echo "$SECONDS" 
1428157497 
+0

從實際的角度來看,這可能並不重要,但嚴格來說,這兩個變量包含不同的時間點。 – 2015-04-04 14:42:08

+0

不,因爲第二次調用'date'只是將'$ CDATE'中的字符串轉換爲自1970-01-01以來的秒數,所以不會生成新日期(就像在您的解決方案中一樣)。 – weibeld 2015-04-04 15:34:30

+0

呃,是的,我可能已經停止閱讀第二行:-) – 2015-04-04 15:46:10

0

最簡單的方法:

source <(date +"CDATE='%Y-%m-%d %H:%M:%S' EPOCH='%s'") 

例子:

[email protected]:/tmp$ source <(date +"CDATE='%Y-%m-%d %H:%M:%S' EPOCH='%s'") 
[email protected]:/tmp$ echo "cdate:$CDATE epoch:$EPOCH" 
cdate:2015-04-05 12:39:58 epoch:1428233998 
相關問題