PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : feiertage in kalenderscript..


sysop
09.07.2006, 21:18:08
hallo, ich wusste nicht, wohin mit dem thema, anfängerproblem ist es aber glaube ich keines...

ich habe ein kalender script, das auch problemlos funktioniert. nun möchte ich feiertage einarbeiten, sprich die feiertage eines landes (deutschland und österreich) farbig hervor heben. gibt es dafür schon funktionen, klassen o.ä.

leider weiss ich auch nicht im geringsten, wie sich manche feiertage berechnen lassen (einige sind ja nicht an einem feste datum).

ich suche nun schon stunden lang, kann aber einfach nichts vernünftiges finden.

xabbuh
09.07.2006, 21:39:20
Mit der Funktion easter_date() (http://www.php.net/easter_date) kannst du den UNIX-Timestamp für Ostern eines Jahres ermitteln. Die weiteren kirchlichen Feiertage wie beispielsweise Pfingsten sollten sich dann durch simple Addition bzw. Subtraktion ermitteln lassen.
Welche Intervalle du dabei genau verwenden musst,
kann ich dir auch nicht sagen. Dabei sollte dir die Suchmaschine deines Vertrauens aber weiterhelfen.

sysop
10.07.2006, 15:05:25
super, danke, die anderen tage bekomme ich schon hin.
easter_date() hat mir schon sehr weiter geholfen

sysop
12.07.2006, 13:29:45
vielleicht braucht das der eine oder andere, hier das ergebnis, bei mir funktioniert es und so soll es ja auch sein :-)
die funktion lässt noch genug platz für spielereien, wie uhrzeiten etc, mich interessieren derzeit zwar nur die feiertage, aber was weiss man.....


<?php

/**
********************************************************************** *****************************************
*
* uebergeben werden die variablen $monat und $jahr.
* aufruf der funktion mit
* ein include dieser datei gibt ein array ($feiertage) mit den tagesdaten zurueck
*
* aufruf erfolgt so:
* include("feiertag.php");
*
* sind monat und jahr nicht gesetzt, wird der aktuelle monat und das aktuelle
* jahr gesetzt.
**
********************************************************************** *****************************************
**/

/**
********************************************************************** *****************************************
*
* basis einstellungen für anzeige
*
********************************************************************** *****************************************
**/
$show_feier_array = 1; // array als string mit komma ausgeben

/**
********************************************************************** *****************************************
*
* tage differenz fuer feiertage die ab ostersonntag berechnet werden
*
* Aschermittwoch = -46 vor ostern
* Osetersonntag = 0
* Christi Himmelfahrt = 39 nach ostern
* Pfingstsonntag = 49 nach ostern
* Pfingstmontag = 50 nach ostern
* Fronleichnam = 60 nach ostern
*
********************************************************************** *****************************************
**/
$fei_er_ta_ge = array('-46', '0', '39', '49', '50', '60');

/**
********************************************************************** *****************************************
*
* feste feiertage definieren, index kann sein:
* Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec*
*
********************************************************************** *****************************************
**/
$fei_e_r['Jan'] = array('1', '6');
$fei_e_r['May'] = array('1'); // mai feiertag (tag der arbeit)
$fei_e_r['Aug'] = array('15'); // mariä himmelfahrt
$fei_e_r['Oct'] = array('26'); // nationalfeiertag österreich
$fei_e_r['Nov'] = array('1', '2'); // allerheiligen, allerseelen
$fei_e_r['Dec'] = array('24', '25', '26'); // weihnachten

function check_feiertage($jahr,$monat=0)
{
global $fei_er_ta_ge, $fei_e_r;

$feiertag = array();
$mon = date ("m", easter_date($jahr));
$tag = date ("d", easter_date($jahr));

if(isset($fei_e_r[date("M",mktime(0,0,0,$monat,1,$jahr))])) $feiertag = $fei_e_r[date("M",mktime(0,0,0,$monat,1,$jahr))];

foreach($fei_er_ta_ge as $element)
{
$feiermon = date("m",mktime(0,0,0,$mon,$tag + $element,$jahr));
if(($feiermon * 1) == $monat)
{
$feiertag[] = (date("d",mktime(0,0,0,$mon,$tag + $element,$jahr)) * 1);
}
}
return $feiertag;
}

if(!isset($jahr)) $jahr = date("Y");
if(!isset($monat)) $monat = date("m");

$feiertage = check_feiertage($jahr,$monat);

if($show_feier_array == 1)
{
$to_show_feier = implode(",",$feiertage);
echo "Feiertage im ".date("M",mktime(0,0,0,$monat,1,$jahr)).": ".$to_show_feier;
}

?>