/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hvordan finder man helligdage?
Fra : KV


Dato : 01-06-07 22:35

Jeg antager, at der ikke er en funktion i PHP der viser helligdage?



 
 
Sune Storgaard (02-06-2007)
Kommentar
Fra : Sune Storgaard


Dato : 02-06-07 00:00

"KV" <nospam@REMOVE.gmail.com> skrev i en meddelelse
news:46609110$0$90275$14726298@news.sunsite.dk...
> Jeg antager, at der ikke er en funktion i PHP der viser helligdage?

$brugertro = $_SERVER["religion"];Du har ganske ret, der findes ikke en
funktion i php der viser helligdage..

Det er lidt af en pandoras æske du har gang i. Du må starte med at definere
hvad du kalder helligdag, det kan jo være alt lige fra grundlovs dag til
ramadanen.. om du så selv vil pille de dage ud manuelt ,eller bruge 3 parts
funktioner er op til dig. Man kan relativt nemt pege juleaften ud da det er
d. 24 dag i 12 måned, men f.eks. pinse som er 50 dage efter påske er knap så
nemt lige at regne ud.


Held og lykke :)



Arne Feldborg (02-06-2007)
Kommentar
Fra : Arne Feldborg


Dato : 02-06-07 00:31

"Sune Storgaard" <nospam@strueradsl.invaliDK> skrev Sat, 2 Jun 2007
01:00:10 +0200

>>$brugertro = $_SERVER["religion"];Du har ganske ret, der findes ikke en
>funktion i php der viser helligdage..
>
Det var dog det mest fantastiske sludder der endnu er skrevet i den her
gruppe.

Og det siger dog ellers ikke så lidt!

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Sune Storgaard (03-06-2007)
Kommentar
Fra : Sune Storgaard


Dato : 03-06-07 09:29


"Arne Feldborg" <feldborg@haunstrup.dk> skrev i en meddelelse
news:0ua1631vta8h84usvnmlp05e77fcl4tmsa@4ax.com...
> "Sune Storgaard" <nospam@strueradsl.invaliDK> skrev Sat, 2 Jun 2007
> 01:00:10 +0200
>
>>>$brugertro = $_SERVER["religion"];Du har ganske ret, der findes ikke en
>>funktion i php der viser helligdage..
>>
> Det var dog det mest fantastiske sludder der endnu er skrevet i den her
> gruppe.

Håber du forstod ironien i ovenstående..




Arne Feldborg (03-06-2007)
Kommentar
Fra : Arne Feldborg


Dato : 03-06-07 23:12

"Sune Storgaard" <nospam@strueradsl.invaliDK> skrev Sun, 3 Jun 2007
10:29:04 +0200


>Håber du forstod ironien i ovenstående..
>
Både ja og nej..

Der finde faktisk ganske mange og ret avancerede kalenderfunktioner i
PHP, nok også flere end de fleste folk egentlig er klar over.

Desuden findes der i hundredvis af kalenderscripts 'derude' som foruden
de traditionelle kalendere (Gregorianske, Julianske, French Republican ,
osv.) også omfatter bla. jødiske og muslimske kalendere.

Så jeg synes egentlig ikke der er nogen grund til at gøre nar af
spørgsmålet.

På den anden side er det jo i sagens natur sådan, at man selv skal
definere hvilke dage man, udfra de lokale forhold, anser for at være
helligdage. (feks er Store Bededag en ren dansk foreteelse).

Men når det er gjort, så er det jo ret simpelt at lave rutiner der
fastlægger hvornår disse dage falder for dette eller hint år og efter
denne eller hin kalender.


--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Sune Storgaard (05-06-2007)
Kommentar
Fra : Sune Storgaard


Dato : 05-06-07 11:46

"Arne Feldborg" < skrev i en meddelelse
news:3de6639odv3kot85uv6q66vmq9qff6apv6@4ax.com...
> "Sune Storgaard" <nospam@strueradsl.invaliDK> skrev Sun, 3 Jun 2007

> Desuden findes der i hundredvis af kalenderscripts 'derude' som foruden
> de traditionelle kalendere (Gregorianske, Julianske, French Republican ,
> osv.) også omfatter bla. jødiske og muslimske kalendere.
>
> Så jeg synes egentlig ikke der er nogen grund til at gøre nar af
> spørgsmålet.

Gjorde jeg bestemt heller ikke, min pointe var blot at det afhænger af øjet
der ser, hvad der er en helligdag, deriblandt spiller religion en stor
rolle.
Vi kan da tage en dag som i dag.. for nogen er det en normal dag, andre en
halv helligdag, nogle har en halv helligdag som af praktiske årsager er
lavet om til en hel dag, andre har faktisk en hel dag..

> På den anden side er det jo i sagens natur sådan, at man selv skal
> definere hvilke dage man, udfra de lokale forhold, anser for at være
> helligdage. (feks er Store Bededag en ren dansk foreteelse).

Og det er her den store hurdle ligger, ikke i php programmeringen. Man kan
relativt nemt plotte datoer ind, og fiske dem ud igen som du selv nævner, og
ja php har gode værktøjer til det.

>
> Men når det er gjort, så er det jo ret simpelt at lave rutiner der
> fastlægger hvornår disse dage falder for dette eller hint år og efter
> denne eller hin kalender.

Ja, men det i sigselv at definere helligdage er php ikke meget bevendt til,
det var med det i baghovedet jeg skrev mit første indlæg i tråden.



Arne Feldborg (02-06-2007)
Kommentar
Fra : Arne Feldborg


Dato : 02-06-07 00:13

"KV" <nospam@REMOVE.gmail.com> skrev Fri, 1 Jun 2007 23:35:14 +0200

>Jeg antager, at der ikke er en funktion i PHP der viser helligdage?
>
Og hvorfor antager du så det.?

PHP har, ligesom de fleste andre programmeringssprog, funktioner der kan
finde påskesøndag[1] i et givent år. Og da alle andre bevægelige
helligdage afhænger af påskedag kan man derfor også umidelbart finde
disse.

Forså vidt angår de faste helligdage, så byder de jo ikke på noget
større problem.

Så vidt så godt. Men selvom PHP faktisk har rutinerne til det, så har
jeg personligt oplevet gevaldige problemer med at få en korrekt
beregning af påske før kalendeskiftet, som i Danmark kom i år 1700.

Det var højst sansynlig min egen skyld. Men jeg fik på et tidspunkt
travlt med andre ting, og måtte derfor droppe det projekt jeg dengang
var i gang med.

Men hvis det 'kun' drejer sig om årstal efter 1700, samt nutidige og
fremtidige beregninger, så er der mig bekendt ingen problemer
overhovedet,


[1]
Eller rettere første søndag efter første fuldmåne efter forårsjævndøgn.
Tidligst 22. Marts og senest 25. April.

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

KV (02-06-2007)
Kommentar
Fra : KV


Dato : 02-06-07 15:24

>>Jeg antager, at der ikke er en funktion i PHP der viser helligdage?
>>
> Og hvorfor antager du så det.?

I.flg. hvad du selv skriver nedenstående, så er der jo ikke nogen funktion
til det, så ehhh...

Jeg er bare interesseret i en salgs is_holiday.



Johan Holst Nielsen (02-06-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 02-06-07 16:58

KV wrote:
>>> Jeg antager, at der ikke er en funktion i PHP der viser helligdage?
>>>
>> Og hvorfor antager du så det.?
>
> I.flg. hvad du selv skriver nedenstående, så er der jo ikke nogen funktion
> til det, så ehhh...
>
> Jeg er bare interesseret i en salgs is_holiday.

Hvordan vil du lave en is_holiday - så skal den tage alle verdens
religioner, nationer osv.. - eller hvorledes karaktiserer du en
helligdag? Er det for Danmark du mangler eller?

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Johan Holst Nielsen (02-06-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 02-06-07 17:27

KV wrote:
>>> Jeg antager, at der ikke er en funktion i PHP der viser helligdage?
>>>
>> Og hvorfor antager du så det.?
>
> I.flg. hvad du selv skriver nedenstående, så er der jo ikke nogen funktion
> til det, så ehhh...
>
> Jeg er bare interesseret i en salgs is_holiday.

Anyway - sad og stenede lidt... her er en funktion der trods alt kan
bruges til at finde de 12. officielle helligdage i Danmark... hvis der
er nogle der kan bruge den so kopier dog løs ;)

http://phpgeek.dk/is_holiday.php

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

KV (02-06-2007)
Kommentar
Fra : KV


Dato : 02-06-07 22:57

>> Jeg er bare interesseret i en salgs is_holiday.
>
> Anyway - sad og stenede lidt... her er en funktion der trods alt kan
> bruges til at finde de 12. officielle helligdage i Danmark... hvis der er
> nogle der kan bruge den so kopier dog løs ;)
>
> http://phpgeek.dk/is_holiday.php

Den er fin - det er lige hvad jeg kan bruge, så tak for det. Jeg havde jo
foretrukket en nem lille indbygget PHP funktion men denne gør jo jobbet lige
så godt.



Arne Feldborg (02-06-2007)
Kommentar
Fra : Arne Feldborg


Dato : 02-06-07 18:33

"KV" <nospam@REMOVE.gmail.com> skrev Sat, 2 Jun 2007 16:24:18 +0200

>>>Jeg antager, at der ikke er en funktion i PHP der viser helligdage?
>>>
>> Og hvorfor antager du så det.?
>
>I.flg. hvad du selv skriver nedenstående, så er der jo ikke nogen funktion
>til det, så ehhh...
>
Jeg forstår ikke problemet. Har du set på kalenderfunktionerne
http://dk.php.net/manual/en/ref.calendar.php
http://dk.php.net/manual/en/function.easter-date.php
http://dk.php.net/manual/en/function.easter-days.php


Når du ved hvor mange dage (easter-days) der et givet år er fra
forårsjævndøgn og til påskedag er resten jo bare til og fra stykker.

Noget a'la:
<?php
$year = 2007;
//først checker vi lige easter_date() for kontrollens skyld
echo 'Påske: '.date("M-d-Y", easter_date($year));

//Og så kører vi ellers derudad
$paaske = easter_days($year);
$easter = mktime(0, 0, 0, 3, (21 + $paaske), $year);
$en_dag = 86400;
echo '<br>****<br>';
echo 'Fastelavn: '.date('d-m-Y',($easter-(49*$en_dag))).'<br>';
echo 'Palmesøndag: '.date('d-m-Y',($easter-(7*$en_dag))).'<br>';
echo 'Skærtorsdag: '.date('d-m-Y',($easter-(3*$en_dag))).'<br>';
echo 'Langfredag: '.date('d-m-Y',($easter-(2*$en_dag))).'<br>';
echo 'Påskedag: '.date('d-m-Y',($easter-(0*$en_dag))).'<br>';
echo '2. påskedag: '.date('d-m-Y',($easter+(1*$en_dag))).'<br>';
echo 'Store bededag: '.date('d-m-Y',($easter+(26*$en_dag))).'<br>';
echo 'Kristi Himmelfartsdag:
'.date('d-m-Y',($easter+(39*$en_dag))).'<br>';
echo 'Pinsedag: '.date('d-m-Y',($easter+(49*$en_dag))).'<br>';
echo '2. pinsedag: '.date('d-m-Y',($easter+(50*$en_dag))).'<br>';

/*mors dag*/
$MumsDay = 0;
for($i2=1;$i2<=16;$i2++) {
if(date("D",mktime(0,0,0,5,$i2,$year))=='Sun') {
if($MumsDay == 1) {
echo '<br>Mors dag:
'.date("d-m-Y",mktime(0,0,0,5,$i2,$year)).'<br>';
break;
}
$MumsDay++;
}
}

/* Summertime start */
for($i2=31;$i2>=10;$i2--) {
if(date("D",mktime(0,0,0,3,$i2,$year))=='Sun') {
echo '<br>Sommertid Start:
'.date("d-m-Y",mktime(0,0,0,3,$i2,$year)).'<br>';
break;
}
}

/* Summertime slut */
for($i2=31;$i2>=10;$i2--) {
if(date("D",mktime(0,0,0,10,$i2,$year))=='Sun') {
echo '<br>Sommertid Slut:
'.date("d-m-Y",mktime(0,0,0,10,$i2,$year)).'<br>';
break;
}
}

/* Advent */
for($i2=24;$i2>=15;$i2--) {
if(date("D",mktime(0,0,0,12,$i2,$year))=='Sun') {
echo '<br>1.
advent:'.date("d-m-Y",mktime(0,0,0,12,($i2-21),$year)).'<br>';
echo '<br>2.
advent:'.date("d-m-Y",mktime(0,0,0,12,($i2-14),$year)).'<br>';
echo '<br>3.
advent:'.date("d-m-Y",mktime(0,0,0,12,($i2-7),$year)).'<br>';
echo '<br>4.
advent:'.date("d-m-Y",mktime(0,0,0,12,$i2,$year)).'<br>';
break;
}
}
exit;
?>

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Peter Brodersen (03-06-2007)
Kommentar
Fra : Peter Brodersen


Dato : 03-06-07 00:50

On Sat, 02 Jun 2007 19:32:48 +0200, Arne Feldborg
<feldborg@haunstrup.dk> wrote:

>$paaske = easter_days($year);
>$easter = mktime(0, 0, 0, 3, (21 + $paaske), $year);
>$en_dag = 86400;

For en god ordens skyld er det ikke hensigtsmæssigt at regne med at én
dag er 86400 sekunder. Påsken kan fx godt falde før skiftet til
sommertid, hvor et døgn kun har 23 timer (82800 sekunder).

Det behøver dog ikke at give et problem i den ende af året, når man
alligevel kun henter dag-måned-år ud.

Det er straks mere kritisk, hvis der var tale om beregninger ved
vintertid, hvor døgnet er 25 timer (90000 sekunder). Det betyder, at
28. oktober 2007 0:00 plus 86400 sekunder er 28. oktober 2007 23:00.
Så henter man her dag, måned, år ud vil resultater, man forventede var
efter 28. oktober således mangle en dag.

Et døgn er et døgn, hvilket både kan være 23 timer, 24 timer eller 25
timer. Her er mktime hensigtsmæssigt, fordi man kan lægge "et døgn"
til i forståelsen "samme tid, næste dag".

Et par eksempler:

print date("Y-m-d",mktime(0,0,0,10,28,2007)); // 2007-10-28
print date("Y-m-d",mktime(0,0,0,10,28,2007)+86400); // 2007-10-28
print date("Y-m-d",mktime(0,0,0,10,28+1,2007)); //2007-10-29

--
- Peter Brodersen
Kendt fra Internet

Arne Feldborg (03-06-2007)
Kommentar
Fra : Arne Feldborg


Dato : 03-06-07 01:57

Peter Brodersen <usenet2007@ter.dk> skrev Sun, 03 Jun 2007 01:50:02
+0200

>For en god ordens skyld er det ikke hensigtsmæssigt at regne med at én
>dag er 86400 sekunder. Påsken kan fx godt falde før skiftet til
>sommertid, hvor et døgn kun har 23 timer (82800 sekunder).
>
Som tidligere nævnt var det kun et eksempel fra noget jeg arbejdede med
for nogle år siden og aldrig blev færdig med (af helt andre grunde end
de her nævnte) .

Et eksempel som spørgeren selv kunne arbejde videre med.

Men sommer / vintertids problemet kunne umiddelbart løses ved at gentage
mktime() for hver forespørgsel og så hele vejen igennem at regne i dage
istedet for i sekunder.

Grunden til at jeg brugte den her nævnte formel var netop, at jeg
oprindelig skulle kunne bruge den til datoer før 1970, og til både den
Gregorianske og til den Julianske kalender.

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Henrik Hansen (04-06-2007)
Kommentar
Fra : Henrik Hansen


Dato : 04-06-07 08:27

"KV" <nospam@REMOVE.gmail.com> writes:

> Jeg antager, at der ikke er en funktion i PHP der viser helligdage?


Der er en klasse i PEAR der hedder Date_Holidays. Jeg har submitted
udregninger for de Kristne danske hellidage til den så den kan du bruge.


--
Henrik Hansen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste