今天有個需求,要在hp unix 上用shell 取 5分鐘前的時間。
找了度娘,古哥 問了老半天 都沒我想要的答案。
1.本來想用 linux 的 date -d 來解決,沒想到 unix上沒有這個 -d 選項。
2.用date +%s-300|bc ,得到5分鐘前的時間毫秒數,但是在毫秒轉 年月日 上,不知道怎麼轉了。
3. 又想到用awk,來實現,發現比較麻煩,又想到gawk 裡有自帶的時間函數:system() ,mktime , strtime 就可以解決,可是服務器上只有awk,沒有gawk.
各種無奈中。。。。。
折騰老半天,在一位網友的熱心幫助下,總算解決了,現貼出來,供大家參考
#得到年月日 時分秒
ymdhmis=`perl -e "print sprintf '%04d-%02d-%02d %02d:%02d:%02d',(localtime(time()-300))[5]+1900,(localtime(time()-300))[4]+1,(localtime(time()-300))[3],(localtime(time()-300))[2],(localtime(time()-300))[1],(localtime(time()-300))[0]"`
echo $ymdhmis
#得到年月日
ymd=`perl -e "print sprintf '%04d-%02d-%02d',(localtime(time()-300))[5]+1900,(localtime(time()-300))[4]+1,(localtime(time()-300))[3]"`
echo $ymd
'%04d-%02d-%02d %02d:%02d:%02d' 這是按格式輸出 %04d 代表4位 年 ,%02d代表2位
(localtime(time()-300))[5]+1900 當前時間減300秒,也就是前5分鐘,後面的+1900,是說時間是從1900年開始算。
(localtime(time()-300))[4]+1 月份從1開始
天,小時,分,秒,依次類推。
……^——*