我想檢測如何檢測這一天是否在我保存的特定設定中。
我已經保存設定
$checkday = "Sunday";
$period = "48"; // this in hours
所以我需要檢查本周的今天是否是星期日 48 小時后(意味著星期二)然后運行一個函式。
我已經制作了這些代碼
$starttimer = date('Y-m-d 00:00:00', strtotime($checkday));
$endtimer = date('Y-m-d H:i:s', strtotime(' ' . $period . ' hour', strtotime(date('Y-m-d 00:00:00'))));
if(time() >= strtotime($starttimer) && time() <= strtotime($endtimer)){
// this should run a function
}
如果今天是星期日,則此代碼有效,但問題是今天是星期一時,它將檢測到下周星期一。我需要它從本周星期日 48 小時后檢查,然后運行功能。
結論是我想從星期日 48 小時后的每周開始運行該功能。
感謝您閱讀我的問題,希望有人可以幫助我。
uj5u.com熱心網友回復:
我想你需要得到本周的一天。
因為如果 checkday = "Monday" 那么 $starttimer 將回傳下周的星期一。
<?php
$checkday = 'Monday';
$period = 48;
$day_this_week = "$checkday this week";
$starttimer = date('Y-m-d 00:00:00', strtotime($day_this_week));
$endtimer = date('Y-m-d H:i:s', strtotime(' ' . $period . ' hour', strtotime(date('Y-m-d 00:00:00'))));
var_dump($starttimer);//string(19) "2022-09-12 00:00:00"
uj5u.com熱心網友回復:
您可以使用 的靈活性strtotime
來查找 的最后一次出現的時間$checkDay
。您還需要檢查以查看今天是檢查日并在該條件下運行。
<?php
$checkDay = 'Sunday';
$period = 48;
$isCheckDay = date('w', strtotime($checkDay)) === date('w');
$start = strtotime('last ' . $checkDay);
$end = strtotime(date('Y-m-d', $start) . ' ' . $period . ' hours');
$now = time();
if ($isCheckDay || ($now >= $start && $now <= $end)) {
echo 'run function';
}
uj5u.com熱心網友回復:
沒有必要使用時間戳。可以直接比較日期時間物件。這使代碼更易于閱讀。
$checkday = "Sunday";
$period = "2 Days";
$dtStart = date_create('Tomorrow')->modify('last '.$checkday);
$dtEnd = (clone $dtStart)->modify($period);
/* Use 'Now' instead of 'Today' in the following line
* if the time periods can also be fractions of days.
*/
$dtToDay = date_create('today');
if($dtToDay >= $dtStart AND $dtToDay < $dtEnd){
echo 'run function';
}
else {
echo 'do nothing';
}
$dtStart 始終是明天之前的最后一個 $checkday 作業日。也可以為 $period 輸入以小時為單位的時間,例如“48 小時”。
演示:https ://3v4l.org/5d2Xt
uj5u.com熱心網友回復:
您可以使用以下代碼來滿足您的要求...
<?php
$checkday = "Sunday";
$period = "48"; // this in hours
echo date('l', strtotime($checkday. ' '.$period.' hours'));
?>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/507671.html
上一篇:如何檢查時間跨度是否為負數。C#