2013-01-03 96 views
0

我有一個解決方案,我的shell日期減法問題沒有喜悅,所以在這裏。 我有一個日期格式,如%m%d%H%M%S這是「0102231203」和第二個%Y%m%d%H%M%S,我可以採取第二年的一年,並做一個正常的減法,但是當它超過一天時,它就成了時間不正確的問題。 這裏是我到目前爲止已經試過減去具體格式的日期

BTT = 0102234500

TPP = 0102233635

BT = date -d ${BTT}

TP = date -d ${TPP}

(除去一年後)

BT = date -d $BTT +%m%d%H%M%S

TP = date +%m%d%H%M%S -d ${TPP}

日期:無效日期`0102234500'

日期:無效日期`0102233635'

BT = date -d @${BTT} +%m%d%H%M%S

TP = date +%m%d%H%M%S -d @${TPP}

怪異輸出

BT = date -d @${BTT}

TP = date -d @${TPP}

週四年03月29七時13分55秒BST 1973

週四年03月29 7點28分二十秒BST 1973

甚至將其改爲添加年份仍然

BTT = 20130102234500

TPP = 20130102233635

BT = date -d @${BTT}

TP = date -d @${TPP}

週五年07月19 8點53分55秒GMT 639867

週五7月19日09:08: 20 GMT 639867

我該如何解決此問題。 TNX

+0

1.這裏有很多關於S.O的問題。與日期算術有關。 2.你會得到更好的幫助,在你的問題上使用適當的shell名稱作爲標籤,例如'csh','bash','ksh',...祝你好運。 – shellter

回答

1

日期的-d選項接受人類可讀的字符串,所以如果你能,你可以做全長日期:

[email protected]:/tmp$ BTT=`date +"%Y-%m-%d %H:%M:%S"` 
[email protected]:/tmp$ TPP=`date +"%Y-%m-%d %H:%M:%S"` 
[email protected]:/tmp$ echo $((`date -d "$TPP" +%s`-`date -d "$BTT" +%s`)) 
3 

有了您的DATAS:

[email protected]:/tmp$ BTT="2013-01-02 23:45:00"       
[email protected]:/tmp$ TPP="2013-01-02 23:36:35"       
[email protected]:/tmp$ echo $((`date -d "$BTT" +%s`-`date -d "$TPP" +%s`)) 
505 

有了結果秒。