Posted By

satie83 on 08/16/13


Tagged

php dates


Versions (?)

Who likes this?

1 person have marked this snippet as a favorite

o0110o


PHP - Calculate Weekends and Holidays in PHP


 / Published in: PHP
 

URL: http://www.patrick-gotthard.de/5680/wochendenden-und-feiertage-mit-php-berechnen

Der folgende Codeschnipsel enthält keinerlei Überprüfungen der übergebenen Parameter, diese sollten für den produktiven Einsatz noch nachgepflegt werden. Wie man sieht, ist die Berechnung von Wochendenden und Feiertagen recht einfach. Diese Berechnung kann man sicherlich auch schnell in anderen Programmiersprachen abbilden.

  1. function freierTag($tag, $monat, $jahr) {
  2.  
  3. // Parameter in richtiges Format bringen
  4. if(strlen($tag) == 1) {
  5. $tag = "0$tag";
  6. }
  7. if(strlen($monat) == 1) {
  8. $monat = "0$monat";
  9. }
  10.  
  11. // Wochentag berechnen
  12. $datum = getdate(mktime(0, 0, 0, $monat, $tag, $jahr));
  13. $wochentag = $datum['wday'];
  14.  
  15. // Prüfen, ob Wochenende
  16. if($wochentag == 0 || $wochentag == 6) {
  17. return true;
  18. }
  19.  
  20. // Feste Feiertage werden nach dem Schema ddmm eingetragen
  21. $feiertage[] = "0101"; // Neujahrstag
  22. $feiertage[] = "0105"; // Tag der Arbeit
  23. $feiertage[] = "0310"; // Tag der Deutschen Einheit
  24. $feiertage[] = "2512"; // Erster Weihnachtstag
  25. $feiertage[] = "2612"; // Zweiter Weihnachtstag
  26.  
  27. // Bewegliche Feiertage berechnen
  28. $tage = 60 * 60 * 24;
  29. $ostersonntag = easter_date($jahr);
  30. $feiertage[] = date("dm", $ostersonntag - 2 * $tage); // Karfreitag
  31. $feiertage[] = date("dm", $ostersonntag + 1 * $tage); // Ostermontag
  32. $feiertage[] = date("dm", $ostersonntag + 39 * $tage); // Himmelfahrt
  33. $feiertage[] = date("dm", $ostersonntag + 50 * $tage); // Pfingstmontag
  34.  
  35. // Prüfen, ob Feiertag
  36. $code = $tag.$monat;
  37. if(in_array($code, $feiertage)) {
  38. return true;
  39. } else {
  40. return false;
  41. }
  42. }

Report this snippet  

You need to login to post a comment.