2016-09-24 90 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; 
    } 
相关问题