Jonathan P |
2008-07-16 14:38 |
Jag skrev en PHP-funktion som räknar ut helgdagarna åt mig automatiskt, så jag slipper mata in varje år för sig...
Kod:
/**
* Räknar ut helgdagar för ett givet år.
* Notera att alla dessa dagar inte är "röda dagar" enligt definitionen, men att många är lediga från arbetet dessa dagar.
*
* @param $år int
* @return array
* @author Jonathan Persson ([email protected])
*/
function rödaDagar($år) {
$dygn = 60*60*24; // antal sekunder på ett dygn
$påskdagen = easter_date($år);
// räkna ut när långfredagen är.
$i = 0;
while(!isset($långfredagen)) {
$i++;
$dag = $påskdagen-($i*$dygn);
if(date("N", $dag) == 5)
$långfredagen = $dag;
}
// räkna ut när midsommardagen är.
for($i=$år."0620"; $i<$år."0626"; $i++) {
if(date("N", strtotime($i)) == 6)
$midsommardagen = strtotime($i);
}
// räkna ut när alla helgons dag är.
for($i=$år."1101"; $i<$år."1106"; $i++) {
if(date("N", strtotime($i)) == 6)
$alla_helgons_dag = strtotime($i);
}
// om ingen av dagarna mellan 1/11 och 6/11 är en lördag så är alla helgons dag 10/31.
if(!isset($alla_helgons_dag))
$alla_helgons_dag = strtotime("$år-10-31");
return array(
"Nyårsdagen" => "$år-01-01",
"Trettondedag jul" => "$år-01-06",
"Skärtorsdagen " => date("Y-m-d", $långfredagen-(1*$dygn)),
"Långfredag" => date("Y-m-d", $långfredagen),
"Påskdagen" => date("Y-m-d", $påskdagen),
"Annandag påsk" => date("Y-m-d", $påskdagen+(1*$dygn)),
"Valborgsmässoafton " => "$år-04-30",
"Första maj" => "$år-05-01",
"Kristi himmelsfärdsdag" => date("Y-m-d", $påskdagen+(39*$dygn)),
"Pingstdagen" => date("Y-m-d", $påskdagen+(49*$dygn)),
"Sveriges nationaldag" => "$år-06-06",
"Midsommardagen" => date("Y-m-d", $midsommardagen),
"Alla helgons dag" => date("Y-m-d", $alla_helgons_dag),
"Julafton" => "$år-12-24",
"Juldagen" => "$år-12-25",
"Annandag jul" => "$år-12-26",
"Nyårsafton" => "$år-12-31"
);
}
|