[英]Get the next time occurance with linux date
Linux date
實用程序可以理解很多字符串,例如:
$ date -d '8:30'
Fri Jan 2 08:30:00 CET 2015
我正在尋找一種獲取下一個8:30
,因此:
8:30
Fri Jan 2
8:30
日之前的Fri Jan 2
,則應返回上述結果; Sat Jan 3 08:30:00 CET 2015
。 可以看到, next 8:30
不會得出正確的答案:
$ date -d 'next 8:30'
date: invalid date ‘next 8:30’
是否有一個表達式來計算?
自己處理它當然是一個選擇,但是由於夏時制等原因,使事情變得更加復雜。
如果時鍾適應夏時制,則應根據第二天的設置將下next 8:30
解析為8:30
。
測試用例 :
鑒於現在是Fri Jan 2 12:01:01 CET 2015
,結果應為:
$ date -d 'next 8:30'
Sat Jan 3 08:30:00 CET 2015
$ date -d 'next 15:30'
Fri Jan 2 15:30:00 CET 2015
只需使用類似:
if [[ $(date -d '8:30 today' +%s) -lt $(date +%s) ]] ; then
next830="$(date -d '8:30 tomorrow')"
else
next830="$(date -d '8:30 today')"
fi
%s
格式字符串為您提供從紀元起的秒數,因此if
語句基本上是:
if 8:30-today is before now:
use 8:30-tomorrow
else
use 8:30-today
我研究了,但似乎不可能。
您可能可以做的是將小時和分鍾與830
進行比較並進行相應打印:
[ $(date '+%H%M') -le 830 ] && date -d '8:30' || date -d '8:30 + 1 day'
如果您想輕松地使用它,請創建一個函數來進行這些計算。
$ [ $(date '+%H%M') -le 830 ] && date '8:30' || date -d '8:30 + 1 day'
Sat Jan 3 08:30:00 CET 2015
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.