-1
有很多SO問題向您展示如何檢查日期時間是否在一個範圍內,但沒有太多的幫助當您想要重複進行並且日期範圍跨越一天以上時。PHP當範圍跨越一天以上時,重新檢查時間是否在範圍內
作爲一個例子,你如何檢查它是否在星期二22:00到星期三07:30?那周你怎麼做那一週?
有很多SO問題向您展示如何檢查日期時間是否在一個範圍內,但沒有太多的幫助當您想要重複進行並且日期範圍跨越一天以上時。PHP當範圍跨越一天以上時,重新檢查時間是否在範圍內
作爲一個例子,你如何檢查它是否在星期二22:00到星期三07:30?那周你怎麼做那一週?
PHP的DataTime類的構造函數接受相對參數this xxxday
,它可以用來給你相對於當前時間的下一個'xxxday'。
因此,例如,new DateTime('next friday')
將爲您提供一個日期時間對象,表示下一個星期五相對於當天的00:00:00。如果當天的星期五爲,那麼這是將返回的日期。
所以,如果你定義
$end = new DateTime(next thursday 07:30);
然後$end
是當今表示對下週二22:00從當前時間,或20:00如果今天是星期二DateTime對象。然後可以採取間隔關閉端從當前時間之前獲得與
$start = clone $end;
$start = $end->sub(new DateInterval('P1DT9H30M'));
它給你DateTime對象1天,9小時30分鐘開始到07:30在下星期四,或在當前時間下週四前的星期二22:00。
然後你就可以獲取當前日期時間,看看是否開始和結束日期時間之間的:
$now = new DateTime();
if($now >= $start && $now <= $end) {
//In interval
}
請[編輯]你的問題,以顯示[你有什麼到目前爲止已經試過(HTTP:/ /whathaveyoutried.com)。您應該包含您遇到問題的代碼[mcve],然後我們可以嘗試幫助解決特定問題。你還應該閱讀[問]。 –
@TobySpeight如果我把我所嘗試過的方法問一個答案,我自己的問題是有道理的[正如所鼓勵的那樣](https://stackoverflow.blog/2011/07/its-ok-to-ask-and-回答你自己的問題/)無論如何,「你將如何檢查它是否在星期二的22:00到接下來的星期四的07:30之間?」似乎是最小的,完整的和可驗證的。我注意到你的「你到目前爲止所嘗試的」鏈接不在現場,你能指出任何SO指導嗎? – Dom