2016-09-24 89 views
0

我有兩個日期我想在每個月的第二個星期天之間提到兩個日期。如何在PHP代碼中做到這一點?如何讓每個月的第二個星期天在兩個日期之間?

下面我提到的兩個日期。

$start_date = '2016-08-24'; 
$end_date = '2017-09-24'; 

謝謝

+0

的http:// stackoverflow.com/questions/15886166/calculate-sundays-between-two-dates將讓你開始 –

回答

1

您可以使用relative formats您可以用DateTime class使用,就像這樣:

$start_date = new DateTime('2016-08-24'); 
$end_date = new DateTime('2017-09-24'); 

$dt = clone $start_date; 
$dt->modify('last day of previous month')->modify('+2 Sundays'); 
while ($dt <= $end_date) { 
    if ($dt >= $start_date) $result[] = $dt->format('Y-m-d'); 
    $dt->modify('last day of this month')->modify('+2 Sundays'); 
} 
print_r ($result); 

輸出是:

Array 
(
    [0] => 2016-09-11 
    [1] => 2016-10-09 
    [2] => 2016-11-13 
    [3] => 2016-12-11 
    [4] => 2017-01-08 
    [5] => 2017-02-12 
    [6] => 2017-03-12 
    [7] => 2017-04-09 
    [8] => 2017-05-14 
    [9] => 2017-06-11 
    [10] => 2017-07-09 
    [11] => 2017-08-13 
    [12] => 2017-09-10 
) 
0

請使用PHP類DateTime和DateInterval的。在DateInterval手冊頁上,有與您的問題類似的代碼示例。

0

試試這個

$startdate = '2016-08-24'; 
    $enddate = '2017-09-24'; 
    getSundays($startdate,$enddate); 
    function getSundays($startdate,$enddate) { 
     $startweek=date("W",strtotime($startdate)); 
     $endweek=date("W",strtotime($enddate)); 
     $year=date("Y",strtotime($startdate)); 
     for($i=$startweek;$i<=$endweek;$i++) { 
      $result=getWeek($i,$year); 
      if($result>$startdate&&$result<$enddate) { 
       echo date('Y-m-d', strtotime('second sunday of '.date("F",strtotime($startdate)).' '.$year)).'<br/>'; 
       //echo " Sunday:"."<br>"; 
      } 
     } 
    } 
    function getWeek($week, $year) { 
     $dto = new DateTime(); 
     $result = $dto->setISODate($year, $week, 0)->format('Y-m-d'); 
     return $result; 
    } 
相關問題