如何檢查是否本月在特定時期存在($ DATE1和DATE2 $)如何檢查是否使用一個月PHP
$month = '2016-01';
$date1 = '2016-01-05';
$date2 = '2016-02-04;
如何檢查是否本月在特定時期存在($ DATE1和DATE2 $)如何檢查是否使用一個月PHP
$month = '2016-01';
$date1 = '2016-01-05';
$date2 = '2016-02-04;
第一個月轉換成一個日期,如該月的第一天。然後,你可以比較的日期來檢查一個月間就在於:
$month_day = date ('Y-m-01', strtotime($month));
$date1_day = date ('Y-m-01', strtotime($date1));
$date2_day = date ('Y-m-01', strtotime($date2));
if (($month_day >= min($date1_day, $date2_day))
&& ($month_day <= max($date1_day, $date2_day)))
{ }
我注意到,你改變月份至日期,然後如果我檢查日期2016-01-01之間(2016-01-05和2016-02-04)它會返回false但當月01日2我要檢查之間已經存在,如果存在MONTH不是日期 –
以下是更正後的版本。我這次測試過了:),它工作。 –
像一個魅力 –
你可以使用strpos搜索字符串()在特定時期存在。 http://php.net/manual/en/function.strpos.php
例如:
if (strpos($date1,$month) || strpos($date2,$month)){/* do stuff */}
請小心,因爲這隻有在該月份與開始或結束的月份相同。它不會工作,如果所需的月份之間的兩個 – bhooks
我得到了我的問題最好的答案對他的鏈接兩個日期
$start = (new DateTime('2016-01-05'))->modify('first day of this month');
$end = (new DateTime('2016-02-04'))->modify('first day of this month');
$interval = DateInterval::createFromDateString('1 month');
$period = new DatePeriod($start, $interval, $end);
$monthsArray = [];
foreach ($period as $dt) {
$monthsArray[] = $dt->format("Y-m"); // I put months exist in this period on array to check later if the $month exist on this array or not
}
之間
The Answer
這個答案得到個月
你能否提供一個更明確的定義,你的意思是「如果$ month存在於兩個日期之間」?例如,你是否要求一種方法來確定特定日期2016-01-01是否發生在$ date1和$ date2之間? – Nate
否我想知道是否在$ date1和$ date2之間存在2016年01月? –
好吧,但是「之間」究竟意味着什麼?例如,如果$ date1是2015-12-30,$ date2是2016-01-02,那麼01月之間是否存在「之間」?如果$ date1是2016-01-29,$ date2是2016-01-30,那麼01月之間是否存在「之間」?如果$ date1是2016-01-30,$ date2是2016-02-15,那麼01月之間是否存在「之間」?看到你的問題中固有的潛在含糊之處? – Nate