2015-12-30 52 views
1

如何檢查是否本月在特定時期存在($ DATE1和DATE2 $)如何檢查是否使用一個月PHP

$month = '2016-01'; 
$date1 = '2016-01-05'; 
$date2 = '2016-02-04; 
+3

你能否提供一個更明確的定義,你的意思是「如果$ month存在於兩個日期之間」?例如,你是否要求一種方法來確定特定日期2016-01-01是否發生在$ date1和$ date2之間? – Nate

+0

否我想知道是否在$ date1和$ date2之間存在2016年01月? –

+0

好吧,但是「之間」究竟意味着什麼?例如,如果$ 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

回答

1

第一個月轉換成一個日期,如該月的第一天。然後,你可以比較的日期來檢查一個月間就在於:

$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))) 
    { } 
+0

我注意到,你改變月份至日期,然後如果我檢查日期2016-01-01之間(2016-01-05和2016-02-04)它會返回false但當月01日2我要檢查之間已經存在,如果存在MONTH不是日期 –

+0

以下是更正後的版本。我這次測試過了:),它工作。 –

+0

像一個魅力 –

-1

你可以使用strpos搜索字符串()在特定時期存在。 http://php.net/manual/en/function.strpos.php

例如:

if (strpos($date1,$month) || strpos($date2,$month)){/* do stuff */} 
+0

請小心,因爲這隻有在該月份與開始或結束的月份相同。它不會工作,如果所需的月份之間的兩個 – bhooks

0

我得到了我的問題最好的答案對他的鏈接兩個日期

$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

這個答案得到個月

相關問題