Zur Navigation

nächsten Feiertag finden

1 webuser

Hallo,
ich will den nächsten Feiertag (in den nächsten 30Tagen) finden.
Beispiel1: wir haben den 17.Dez. dann kommt Echo
"Der nächste Feiertag ist Heiligabend am 24. 12."

Wenn wir jetzt z.B. den 2.Januar hätten, wäre Ostern der nächste
Feiertag. Da das aber erst im Frührjahr ist, wird nichts gezeigt.

Mein Anfang:
<?php

date_default_timezone_set('Europe/Berlin');

         $year = date("Y");  // aktuelles Jahr
         $easter=  date("Y-m-d",easter_date(date("Y")));
       

         $holidays = array(
                 array('$holiday' => 'neujahr', 'dat' =>         mktime(0,0,0,1,1,$year)),
		 array('$holiday' => 'ostern', 'dat' =>     	 $easter),
                 array('$holiday' => 'pfingsten', 'dat' =>       strtotime("+49 days", $easter)),
                 array('$holiday' => 'heiligabend', 'dat' =>     mktime(0,0,0,12,24,$year))

         );

for($i = 0, $alle = count($holidays); $i < $alle; ++$i) {

// hier ist es bestimmt schon falsch
    $holidays[$i]['anzahl'] = alter($holidays[$i]);
}
hier noch prüfen ob die Tageszahl < 30 ist, wenn kein Feiertag in den nächsten 30 Tagen dann nichts 
       echo "Der nächte Feiertag ist Heiligabend";
    ?>

  <?php
  function alter( $start )
{
         $start= date("Y-m-d",$start);
         $datum=  new DateTime($start);
         $heute = new DateTime('today');
         $interval = $datum->diff($heute);

$ergebnis = $interval->format('%a');
return $ergebnis;

}

?>

Gruß
Webuser

17.12.2017 10:58

2 Jörg

for($i = 0, $alle = count($holidays); $i < $alle; ++$i) {

// hier ist es bestimmt schon falsch
    $holidays[$i]['anzahl'] = alter($holidays[$i]);
}

Die Schleife geht auch einfacher:

foreach ($holidays as $i => $item) {
    $holidays[$i]['anzahl'] = alter($item['dat']);
}

... wobei an alter() wohl das Datum übergeben werden soll, also $item['dat']

Du kannst zur Überprüfung das Array hiernach ausgeben lassen:

echo '<pre>';
print_r($holidays);
echo '</pre>';

... dann siehst du, dass unterschiedliche Detumsformate in $holidays gespeichert sind. Ostern ist nicht im Unix-Timestamp-Format gespeichert und dadurch schlägt auch die Berechnung von Pfingsten fehl

18.12.2017 14:49

1 Forenmitglied fand diesen Beitrag gut

Beitrag schreiben (als Gast)

Beim Verfassen des Beitrages bitte die Forenregeln beachten.





[BBCode-Hilfe]