Årets norske helligdager

Ofte kan det være kjekt å vite hvilke dager som er helligdager (så kalte røddager). Etter å ha letet lenge på nettet etter webservices eller lignende for å hente dette fant jeg til slutt ut at jeg måtte lage noe selv. Det var rett og slett ikke noe å finne der ute på verdensveven.

Så i den anledning lagde jeg en enkel php-kode for å hente helligdager for gitt år. Det er i utgangspunktet veldig enkelt, da helligdagene i Norge bestemmes nesten utelukket av påsken. Siden PHP har en funksjon for å finne ut når siste søndagen i påsken er, gjør dette bare alt til et enkelt regnestykke.

Under ser du koden som jeg lagde for å putte alle helligdagene i et array. Koden er per dags dato veldig rotette, da den er den koden jeg skrev når jeg drev å testet det. En penere kode kommer om ikke så alt for lenge.

<?php

class norwegianholidays 
{
    function 
createTimestamp$day$month$year )
    {
        return 
mktime000000$month$day$year );
    }
    function 
fetchNorwegianHolidays$year )
    {
        
$first_easter easter_date$year );
        
$first_easter_day =  date ('d-m-Y'$first_easter);
        
        list( 
$first_day$first_month$first_year ) = split'[-]'$first_easter_day );
        
        
$sunday_before_sunday mktime(000000$first_month$first_day-7$first_year );
        
$friday_before_sunday mktime(000000$first_month$first_day-2$first_year );
        
$thursday_before_sunday mktime(000000$first_month$first_day-3$first_year );
        
$second_easterday mktime(000000$first_month$first_day+1$first_year );
        
$kristi mktime(000000$first_month$first_day+39$first_year );
        
$first_pins mktime(000000$first_month$first_day+49$first_year );
        
$second_pins mktime(000000$first_month$first_day+50$first_year );
    
        list( 
$sbs_d$sbs_m$sbs_y ) = split'[-]'date'd-m-Y'$sunday_before_sunday ) );
        list( 
$tbs_d$tbs_m$tbs_y ) = split'[-]'date'd-m-Y'$thursday_before_sunday ) );
        list( 
$fbs_d$fbs_m$fbs_y ) = split'[-]'date'd-m-Y'$friday_before_sunday ) );
        list( 
$fe_d$fe_m$fe_y) = split'[-]'date'd-m-Y'$first_easter ) );
        list( 
$se_d$se_m$se_y ) = split'[-]'date'd-m-Y'$second_easterday ) );
        list( 
$k_d$k_m$k_y ) = split'[-]'date'd-m-Y'$kristi ) );
        list( 
$fp_d$fp_m$fp_y ) = split'[-]'date'd-m-Y'$first_pins ) );
        list( 
$sp_d$sp_m$sp_y ) = split'[-]'date'd-m-Y'$second_pins ) );
        
        
$holiday_array = array();
        
$holiday_array['info']    = array();
        
$holiday_array['info']['Description'] = 'Norwegian holidays';
        
$holiday_array['info']['Author'] = 'Anders Sandvik Berre';
        
$holiday_array['info']['AuthorEmail'] = 'anders@berremedia.no';
        
$holiday_array['info']['Created'] = '2009-01-16';
        
$holiday_array['info']['Updated'] = '2009-01-16';
        
$holiday_array['info']['Version'] = '0.1';
        
$holiday_array['info']['Year'] = $year;
        
        
$holiday_array['days']    = array();
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Første nyttårsdag'
                                
'EnglishName'    => 'First Day of the year',
                                
'Day'        => '01',
                                
'Month'        => '01',
                                
'Timestamp'    => $this->createTimestamp11$year )
                                );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Palmesøndag',
                                
'EnglishName'    => 'Palm SunDay',
                                
'Day'        => $sbs_d,
                                
'Month'        => $sbs_m,
                                
'Timestamp'    => $this->createTimestamp$sbs_d$sbs_m$year )
                                 );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Skjærtorsdag',
                                
'EnglishName'    => '',
                                
'Day'        => $tbs_d,
                                
'Month'        => $tbs_m,
                                
'Timestamp'    => $this->createTimestamp$tbs_d$tbs_m$year )
                                 );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Langfredag',
                                
'EnglishName'    => 'Good FriDay',
                                
'Day'        => $fbs_d,
                                
'Month'        => $fbs_m,
                                
'Timestamp'    => $this->createTimestamp$fbs_d$fbs_m$year )
                                 );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Første påskedag',
                                
'EnglishName'    => 'Easter Day',
                                
'Day'        => $fe_d,
                                
'Month'        => $fe_m,
                                
'Timestamp'    => $this->createTimestamp$fe_d$fe_m$year )
                                 );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Andre påskedag',
                                
'EnglishName'    => 'Second Day of easter',
                                
'Day'        => $se_d,
                                
'Month'        => $se_m,
                                
'Timestamp'    => $this->createTimestamp$se_d$se_m$year )
                                 );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Arbeidernes internasjonale kampdag',
                                
'EnglishName'        => 'Workers international Day',
                                
'Day'        => '01',
                                
'Month'        => '05',
                                
'Timestamp'    => $this->createTimestamp15$year )
                                 );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Grunnlovsdag',
                                
'EnglishName'    => 'Constitution Day',
                                
'Day'        => 17,
                                
'Month'        => '05',
                                
'Timestamp'    => $this->createTimestamp175$year )
                                 );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Kristi himmelfartsdag',
                                
'EnglishName'    => '',
                                
'Day'        => $k_d,
                                
'Month'        => $k_m,
                                
'Timestamp'    => $this->createTimestamp$k_d$k_m$year )
                                 );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Første pinsedag',
                                
'EnglishName'    => 'Pentecost',
                                
'Day'        => $fp_d,
                                
'Month'        => $fp_m,
                                
'Timestamp'    => $this->createTimestamp$fp_d$fp_m$year )
                                 );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Andre pinsedag',
                                
'EnglishName'    => '',
                                
'Day'        => $sp_d,
                                
'Month'        => $sp_m,
                                
'Timestamp'    => $this->createTimestamp$sp_d$sp_m$year )
                                 );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Første juledag',
                                
'EnglishName'    => 'Christmas Day',
                                
'Day'        => 25,
                                
'Month'        => 12,
                                
'Timestamp'    => $this->createTimestamp2512$year )
                                 );
        
$holiday_array['days'][] = array( 
                                
'Name'        => 'Andre juledag',
                                
'EnglishName'    => '',
                                
'Day'        => 26,
                                
'Month'        => 12,
                                
'Timestamp'    => $this->createTimestamp2612$year )
                                 );
                                 
        
        
$holiday_array['Changelog'] = array();
        
$holiday_array['Changelog'][] = array( 
                                            
'Date'            => '2009-01-16',
                                            
'Author'        => 'Anders Sandvik Berre',
                                            
'AuthorEmail'    => 'anders@berremedia.no',
                                            
'Changes'        => 'Creation' );
            
        return 
$holiday_array;
        
    }

}

?>
<?php
include_once( 'norwegianholidays.php' );

$nh = new norwegianholidays();

$list_of_holidays $nh->fetchNorwegianHolidaysdate('Y') );
?>

3 kommentarer

Logg inn for å hente ditt navn og ikon | Registrer en ny konto
  1. fuigil sier
    08. mars 2009 @ 18:29

    haQD5H <a href="http://kskcdxaysael.com/">kskcdxaysael</a>, [url=http://yvzegxgjqmpt.com/]yvzegxgjqmpt[/url], [link=http://zwkncntprubb.com/]zwkncntprubb[/link], http://sdqoexrawiyo.com/

  2. Anders Sandvik Berre sier
    27. januar 2009 @ 14:50

    Hehe. Det er vel for særlig interesserte dette ja.

    Kuult bilde forresten ;)

  3. Åge Sjølstad sier
    27. januar 2009 @ 14:12

    Steiki Bæra, det der skjønner jeg ikke så mye av.. Joda, litt... men, noduls på php/programmering/biler/fly og matte.. og sikkert tusen ting til.