Gå til innhold

Norske helligdager


Anbefalte innlegg

Skrevet

Hei,

 

Jeg jobber med å utvikle en kalender i PHP. Problemet er at jeg gjerne ønsker å oppgi "røde" dager. Men, som vi alle vet, endrer noen av disse dagene seg, f.eks påske..

 

Hvordan kan jeg regne ut når påsken inntreffer? finnes det noen ferdig-lagde matte stykker for dette, eller hvordan vil jeg gå fram for å finne røde dager i Norge?

Videoannonse
Annonse
Skrevet

Påskesøndag er første søndag etter første fullmåne etter vårjevndøgn. Pinse er 50 dager etter påskeaften. Kristi Himmelfartsdag er 6. torsdag etter skjærtorsdag (den måtte jeg konsultere Google for å få svar på). Jul, 1. mai og 17. mai klarer du vel selv? :) Tror det var alle helligdagene.

Skrevet

Jo, dette var jeg klar over :) For å omformulere meg litt, hvordan regner jeg da ut når påsken inntreffer? Hvordan vil regnestykket se ut? klarer ikke helt å skjønne hvordan jeg skal finne ut når det er fullmåne etc

Skrevet

Å finne ut når påsken skjer er faktisk en lengre regneoprasjon og har faktisk blitt gitt som eksamensoppgave på universiteter flere ganger. Så om det finnes noe innebygget ville jeg bare gått for denne.

Skrevet

Endte opp med å gjøre det slik, vet ikke om det blir helt korrekt?

 

<?php
function norwegian_red_days($year)
{
// Easter days
$easter_days = easter_days($year);
// Dato første påskedag
$easter_first_day = 21 + $easter_days;
$date = 21 . "-" . 3 . "-" . $year;
// Første påske dag
$easter_date = date('d-m-Y', strtotime($date. "+{$easter_days} days"));

$red_days = array();
$red_days[] = "1/01/" . $year;
$red_days[] = "17/05/" . $year;
$red_days[] = str_replace('-','/',date('d-m-Y', strtotime($easter_date . "- 3 days")));
$red_days[] = str_replace('-','/',date('d-m-Y', strtotime($easter_date . "- 2 days")));
$red_days[] = str_replace('-','/',$easter_date);
$red_days[] = str_replace('-','/',date('d-m-Y', strtotime($easter_date . "+ 1 days")));
$red_days[] = str_replace('-','/',date('d-m-Y', strtotime($easter_date . "+ 39 days")));
$red_days[] = str_replace('-','/',date('d-m-Y', strtotime($easter_date . "+ 49 days")));
$red_days[] = str_replace('-','/',date('d-m-Y', strtotime($easter_date . "+ 50 days")));
$red_days[] = "25/12/" . $year;
$red_days[] = "26/12/" . $year;
return $red_days;
}
echo "<pre>";
print_r(norwegian_red_days(2016));
echo "</pre>";

Skrevet (endret)

Du kan forenkle koden mye, all str_replace() kan droppes, pluss litt til


function norwegian_red_days($year)
{
// Første påske dag
$easter_timestamp=strtotime('+' . easter_days($year) . ' days',mktime(0,0,0,3,21,$year));

$red_days = array();
$red_days[] = "1/01/" . $year;
$red_days[] = "17/05/" . $year;
$red_days[] = "25/12/" . $year;
$red_days[] = "26/12/" . $year;

// påske + kristi himmelfart + pinse
foreach (array(-3,-2,0,1,39,49,50) as $d)
 $red_days[]=date('d/m/Y',strtotime("{$d} days",$easter_timestamp));

return $red_days;
}

Endret av Crowly
Skrevet

Takk for det Crowly, har allerede forenklet den, men liker at koden også er enkel og lesbar, for mye foreach blandet med strtotime osv syntes jeg personlig blir litt rotete, men takk for kode snutten :)

  • 10 år senere...
  • 1 måned senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...