2016-09-24 24 views
0

Ich habe zwei Termine, die ich jeden zweiten Sonntag zwischen zwei genannten Datum bekommen möchte. Wie macht man das in PHP-Code?Wie komme ich jeden zweiten Sonntag zwischen zwei Terminen?

Unter meinem zwei erwähnten Datum.

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

Danke

+0

http: // stackoverflow.com/questions/15886166/calculate-sundays-between-two-dates werden Sie starten –

Antwort

1

Sie könnten der relative formats Sie mit dem DateTime class, wie diese können verwendet werden:

$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); 

Die Ausgabe lautet:

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

Bitte Verwendung von PHP-Klassen Datetime und DateInterval machen. Auf der DateInterval-Handbuchseite finden Sie Beispiele für Code, der Ihrem Problem ähnelt.

0

Versuchen Sie dieses

$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; 
    } 
Verwandte Themen