2016-06-10 64 views
1

我有每15分鐘處理一次數據的計時任務(12:00,12:15等)。我需要一個bash函數/腳本,它決定了直到下一個處理週期相對於當前時間。如果當前時間=「15:09:00 2016」 ,則下一個處理週期將是360秒。有任何想法嗎?謝謝。使用bash計算時間(以秒爲單位)

+0

怎麼樣'日期-D「+ 6分鐘」' –

回答

3

獲取秒當前時刻從unix新紀元

$ now=$(date +%s) 

然後計算該值模900(900秒是15分鐘),減去從900

$ echo $((900 - now % 900)) 
+0

我要張貼類似的東西,但在時區被抓了起來 - 要知道那個時代是UTC,如果你在一些奇怪的時區是,並使用類似3600秒的東西來代替,你可能會關閉。但是對於大多數情況來說,這已經夠好了。 – rrauenza

+0

不錯。要查找*下一個* 15分鐘時間:'date -d「@ $((now = $(date +%s),now +(900-now%900)))」+%H:%M' –

+0

謝謝!兩種方法都有效! –

1

date命令允許在-d --date選項之後提供日期。 date也理解相對日期(例如+ 6 min,+3 days等)。因此,如果您需要知道未來幾分鐘的時間,您可以簡單地使用date -d "+ 6 min"來查找確切的時間。例如

$ date 
Fri Jun 10 15:22:45 CDT 2016 

$ date -d "+ 6 min" 
Fri Jun 10 15:28:47 CDT 2016 
+0

我認爲這隻能由GNU date支持 – andlrc

+0

是的,那是GNU coreutils提供的'date'。好點子。 –

相關問題