|
| Mærkedage PHP Fra : Karl Erik Christense~ |
Dato : 05-06-10 16:19 |
|
Da jeg ikke selv er nogen PHP ørn, kan nogen måske sige mig hvordan jeg
forenkler flg. funktioner:
$mnd = date("n");
$dag = date("j");
switch ($mnd)
{
case 6:
switch ($dag)
{
case 5:
$spd = "- Grundlovsdag (Constitution Day) <a href='http://
en.wikipedia.org/wiki/Constitution_of_Denmark'>Read</a>";
break;
}
}
Kan jeg kombinere de 2 switch med and således:
switch ($mnd) and ($dag)
{
case 6 and 5:
--
Karl Erik.
http://www.ranunkelvej.com
| |
Johan Holst Nielsen (05-06-2010)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 05-06-10 18:31 |
|
On 2010-06-05 17:18, Karl Erik Christensen wrote:
> Da jeg ikke selv er nogen PHP ørn, kan nogen måske sige mig hvordan jeg
> forenkler flg. funktioner:
>
> $mnd = date("n");
> $dag = date("j");
> switch ($mnd)
> {
> case 6:
> switch ($dag)
> {
> case 5:
> $spd = "- Grundlovsdag (Constitution Day) <a href='http://
> en.wikipedia.org/wiki/Constitution_of_Denmark'>Read</a>";
> break;
> }
> }
>
> Kan jeg kombinere de 2 switch med and således:
>
> switch ($mnd) and ($dag)
> {
> case 6 and 5:
Et alternativ kunne være
$mnddag = date('md');
switch($mnddag) {
case '0605':
$spd = '- Grundlovsdag....';
break;
}
Nu ved jeg ikke hvor mange mærkedage du skulle have ind - ellers kunne
du lige så vel lave en if/elseif løsning ala
$mnddag = date('md');
if($mnddag == '0605') {
$spd = 'Grundlovsdag....';
}
elseif($mnddag = '1224') {
$spd = 'Juleaften...';
}
I øvrigt - husk at date() returnerer en streng - ikke en integer. PHP er
generelt ligeglad - men det er stadig mest sundt at være opmærksom på
det. Du sammenligner egentlig i dit eksempel '6' == 6 - hvilket ikke er
det samme (PHP gætter sig så til det er det samme.) Dette kan evt. løses
via type casting - ala
$mnd = intval(date("n")); eller $mnd = (integer)date("n");
Mvh
Johan
| |
Karl Erik Christense~ (05-06-2010)
| Kommentar Fra : Karl Erik Christense~ |
Dato : 05-06-10 18:46 |
|
Den Sat, 05 Jun 2010 19:30:51 +0200 skrev Johan Holst Nielsen:
> Et alternativ kunne være
>
> $mnddag = date('md');
> switch($mnddag) {
> case '0605':
> $spd = '- Grundlovsdag....';
> break;
> }
>
> Nu ved jeg ikke hvor mange mærkedage du skulle have ind - ellers kunne
> du lige så vel lave en if/elseif løsning ala
>
> $mnddag = date('md');
> if($mnddag == '0605') {
> $spd = 'Grundlovsdag....';
> }
> elseif($mnddag = '1224') {
> $spd = 'Juleaften...';
> }
>
> I øvrigt - husk at date() returnerer en streng - ikke en integer. PHP er
> generelt ligeglad - men det er stadig mest sundt at være opmærksom på
> det. Du sammenligner egentlig i dit eksempel '6' == 6 - hvilket ikke er
> det samme (PHP gætter sig så til det er det samme.) Dette kan evt. løses
> via type casting - ala
> $mnd = intval(date("n")); eller $mnd = (integer)date("n");
>
> Mvh
> Johan
Hej Johan.
Jeg takker for løsningen. Den lå jo lige til højrebenet
Streng/Integer er bemærket.
Er der nogen fordele ved if contra case?
Der er kun brug for ganske få "Mærkedage" - Ideen udsprang i dag, og da
jeg sidder på en ringe trådløs forbindelse, har jeg ikke søgt særlig
meget på nettet.
--
Karl Erik.
| |
Stig Johansen (06-06-2010)
| Kommentar Fra : Stig Johansen |
Dato : 06-06-10 09:51 |
|
Karl Erik Christensen wrote:
> Der er kun brug for ganske få "Mærkedage" - Ideen udsprang i dag, og da
> jeg sidder på en ringe trådløs forbindelse, har jeg ikke søgt særlig
> meget på nettet.
Nu ved jeg ikke hvad du mener med 'mærkedage', men netop påske og
dearafledte mærkedage er ikke datobestemte.
Netop beregning af disse har været min kæphest siden ca. '84, da det
samtidig angiver bank/valørdage, som var essentielt for mit virke.
Til dem som ikke ved det, så er det faste mærkedage, samt variable
mærkedage, hvor påskesøndag er angivet som den første søndag efter første
fuldmåne efter forårsjævndøgn (dog med nogle begrænsninger).
Resten (langfredag, skærtorsdag samt pinse er påskesøndag+konstant).
Hvis du er interesseret kan jeg muligvis finde noget(pascal) kode til disse
beregninger, dog uder forudsætningen, at det skulle være skudår i år 4840,
som jeg ikke har taget hensyn til.
Endvidere blev der rykket adskillige dage i fortiden, som der heller ikke er
taget hensyn til.
--
Med venlig hilsen
Stig Johansen
| |
Leif Neland (06-06-2010)
| Kommentar Fra : Leif Neland |
Dato : 06-06-10 10:14 |
|
Stig Johansen skrev:
> Karl Erik Christensen wrote:
>
>> Der er kun brug for ganske få "Mærkedage" - Ideen udsprang i dag, og da
>> jeg sidder på en ringe trådløs forbindelse, har jeg ikke søgt særlig
>> meget på nettet.
>
> Nu ved jeg ikke hvad du mener med 'mærkedage', men netop påske og
> dearafledte mærkedage er ikke datobestemte.
>
> Netop beregning af disse har været min kæphest siden ca. '84, da det
> samtidig angiver bank/valørdage, som var essentielt for mit virke.
>
> Til dem som ikke ved det, så er det faste mærkedage, samt variable
> mærkedage, hvor påskesøndag er angivet som den første søndag efter første
> fuldmåne efter forårsjævndøgn (dog med nogle begrænsninger).
>
Hvis du kan nøjes med påskesøndag og deraf afledede datoer i perioden
1970-2037, så kan du bruge php's easter_date().
Leif
--
Bevar P2, luk P3, der er nok P3'er i forvejen.
| |
Martin (15-06-2010)
| Kommentar Fra : Martin |
Dato : 15-06-10 18:19 |
|
On 06-06-2010 10:50, Stig Johansen wrote:
> Karl Erik Christensen wrote:
>
>> Der er kun brug for ganske få "Mærkedage" - Ideen udsprang i dag, og da
>> jeg sidder på en ringe trådløs forbindelse, har jeg ikke søgt særlig
>> meget på nettet.
>
> Nu ved jeg ikke hvad du mener med 'mærkedage', men netop påske og
> dearafledte mærkedage er ikke datobestemte.
>
> Netop beregning af disse har været min kæphest siden ca. '84, da det
> samtidig angiver bank/valørdage, som var essentielt for mit virke.
>
> Til dem som ikke ved det, så er det faste mærkedage, samt variable
> mærkedage, hvor påskesøndag er angivet som den første søndag efter første
> fuldmåne efter forårsjævndøgn (dog med nogle begrænsninger).
$year = 2010;
// golden number
$golden = null;
$century = null;
// 23-Epact (modulo 30)
$epact = null;
// number of days from 21 March to the Paschal Full Moon
$i = null;
// weekday of the Full Moon (0=Sunday,...)
$j = null;
if ($year > 1582) {
$golden = $year % 19;
$century = floor($year / 100);
$l = floor($century / 4);
$epact = ($century - $l - floor((8 * $century + 13) / 25)
+ 19 * $golden + 15) % 30;
$i = $epact - floor($epact / 28) * (1 - floor($epact / 28) *
floor(29 / ($epact + 1)) * floor((21 - $golden) / 11));
$j = ($year + floor($year / 4) + $i + 2 - $century + $l);
$j = $j % 7;
} else {
$golden = $year % 19;
$i = (19 * $golden + 15) % 30;
$j = ($year + floor($year / 4) + $i) % 7;
}
$l = $i - $j;
$month = 3 + floor(($l + 40) / 44);
$day = $l + 28 - 31 * floor($month / 4);
$date = new Date(sprintf('%04d-%02d-%02d', $year, $month, $day));
return $date;
>
> Resten (langfredag, skærtorsdag samt pinse er påskesøndag+konstant).
>
> Hvis du er interesseret kan jeg muligvis finde noget(pascal) kode til disse
> beregninger, dog uder forudsætningen, at det skulle være skudår i år 4840,
> som jeg ikke har taget hensyn til.
>
> Endvidere blev der rykket adskillige dage i fortiden, som der heller ikke er
> taget hensyn til.
>
| |
Vagn Kofoed (22-06-2010)
| Kommentar Fra : Vagn Kofoed |
Dato : 22-06-10 08:11 |
|
Den 15-06-2010 19:19, Martin skrev:
> On 06-06-2010 10:50, Stig Johansen wrote:
>
>> Karl Erik Christensen wrote:
>>
>>
>>> Der er kun brug for ganske få "Mærkedage" - Ideen udsprang i dag, og da
>>> jeg sidder på en ringe trådløs forbindelse, har jeg ikke søgt særlig
>>> meget på nettet.
>>>
>> Nu ved jeg ikke hvad du mener med 'mærkedage', men netop påske og
>> dearafledte mærkedage er ikke datobestemte.
>>
>> Netop beregning af disse har været min kæphest siden ca. '84, da det
>> samtidig angiver bank/valørdage, som var essentielt for mit virke.
>>
>> Til dem som ikke ved det, så er det faste mærkedage, samt variable
>> mærkedage, hvor påskesøndag er angivet som den første søndag efter første
>> fuldmåne efter forårsjævndøgn (dog med nogle begrænsninger).
>>
> $year = 2010;
>
> // golden number
> $golden = null;
> $century = null;
> // 23-Epact (modulo 30)
> $epact = null;
> // number of days from 21 March to the Paschal Full Moon
> $i = null;
> // weekday of the Full Moon (0=Sunday,...)
> $j = null;
>
> if ($year> 1582) {
> $golden = $year % 19;
> $century = floor($year / 100);
> $l = floor($century / 4);
> $epact = ($century - $l - floor((8 * $century + 13) / 25)
> + 19 * $golden + 15) % 30;
> $i = $epact - floor($epact / 28) * (1 - floor($epact / 28) *
> floor(29 / ($epact + 1)) * floor((21 - $golden) / 11));
> $j = ($year + floor($year / 4) + $i + 2 - $century + $l);
> $j = $j % 7;
> } else {
> $golden = $year % 19;
> $i = (19 * $golden + 15) % 30;
> $j = ($year + floor($year / 4) + $i) % 7;
> }
> $l = $i - $j;
> $month = 3 + floor(($l + 40) / 44);
> $day = $l + 28 - 31 * floor($month / 4);
>
> $date = new Date(sprintf('%04d-%02d-%02d', $year, $month, $day));
> return $date;
>
Ligner Gauss' algoritme som man (i hvert fald i "gamle" dage) kunne
finde i Rejse- og skrivkalenderen. I begyndelsen af 80-erne lykkedes det
mig at lave den i en one-liner i APL, som vel er det sjoveste sprog jeg
har programmeret i. Imidlertid fik jeg flere år efter at vide at den
havde regnet forkert i 1984!
Kunne du ikke checke det for mig?
Vagn
| |
Martin (22-06-2010)
| Kommentar Fra : Martin |
Dato : 22-06-10 17:09 |
|
On 22-06-2010 09:11, Vagn Kofoed wrote:
> Ligner Gauss' algoritme som man (i hvert fald i "gamle" dage) kunne
> finde i Rejse- og skrivkalenderen. I begyndelsen af 80-erne lykkedes det
> mig at lave den i en one-liner i APL, som vel er det sjoveste sprog jeg
> har programmeret i. Imidlertid fik jeg flere år efter at vide at den
> havde regnet forkert i 1984!
>
> Kunne du ikke checke det for mig?
Den giver
1984-4-22
Om det så er det rigtige har jeg ingen anelse om :)
men iflg
http://www.smart.net/~mmontes/freq3.html
er det korrekt :)
| |
Vagn Kofoed (23-06-2010)
| Kommentar Fra : Vagn Kofoed |
Dato : 23-06-10 08:08 |
|
Den 22-06-2010 18:08, Martin skrev:
> On 22-06-2010 09:11, Vagn Kofoed wrote:
>> Ligner Gauss' algoritme som man (i hvert fald i "gamle" dage) kunne
>> finde i Rejse- og skrivkalenderen. I begyndelsen af 80-erne lykkedes det
>> mig at lave den i en one-liner i APL, som vel er det sjoveste sprog jeg
>> har programmeret i. Imidlertid fik jeg flere år efter at vide at den
>> havde regnet forkert i 1984!
>>
>> Kunne du ikke checke det for mig?
>
> Den giver
> 1984-4-22
>
> Om det så er det rigtige har jeg ingen anelse om :)
>
> men iflg
> http://www.smart.net/~mmontes/freq3.html
> er det korrekt :)
Tja. Siden viser at du har regnet den rigtigt ud i forhold til
algoritmen. Det der vist er brug for, er hvad den officielle kalender
siger.
Hvis man nu tager højde for mulige fejlkilder i forhold til årstallet 1)
min kilde med oplysningen - 2) min hukommelse, der ikke er hvad den har
været - må spørgsmålet lyde:
Hvornår faldt påskedag i følge den officielle kalender i årene 1982 - 1989?
Min Lightning til Thunderbird sætter ikke helligdage så lang tilbage, så
jeg tror jeg skal have hjælp fra nogen der har arkivalierne i orden.
Hvis ikke nogen herfra har svaret, er stedet sikkert dk.videnskab.historie.
Spørgsmålet er måske lidt pjattet, men det har faktisk med mellemrum
naget mig om det var Gauss eller mig der havde en fejl.
| |
Arne Feldborg (23-06-2010)
| Kommentar Fra : Arne Feldborg |
Dato : 23-06-10 11:51 |
|
Vagn Kofoed <vagn.kofoed@gmail.com> skrev Wed, 23 Jun 2010 09:08:00
+0200
>Hvornår faldt påskedag i følge den officielle kalender i årene 1982 - 1989?
>
Der findes masser af steder man kan få det oplyst, og sågar små
programmer man kan hente hjem. Det bruges bla. meget indenfor
slægtsforskning, hvor alle de kirkelige helligdage, såvel de faste som
de forskydelige, kan optræde i kirkebøger osv.
Alle disse kalendere byger på Bauers Kalender fra 1868. Se feks:
http://www.morchslaegt.dk/bauers/bauer.htm
| |
Arne Feldborg (23-06-2010)
| Kommentar Fra : Arne Feldborg |
Dato : 23-06-10 12:03 |
| | |
Vagn Kofoed (24-06-2010)
| Kommentar Fra : Vagn Kofoed |
Dato : 24-06-10 06:26 |
| | |
Martin (24-06-2010)
| Kommentar Fra : Martin |
Dato : 24-06-10 08:58 |
|
On 24-06-2010 07:25, Vagn Kofoed wrote:
> Den 23-06-2010 13:03, Arne Feldborg skrev:
>> Arne Feldborg<feldborg@haunstrup.dk> skrev Wed, 23 Jun 2010 12:51:23
>> +0200
>>
>>
>>> Der findes masser af steder man kan få det oplyst, og sågar små
>>> programmer man kan hente hjem.
>>>
>> Iøvrigt er der jo i PHP funktionerne easter_date() og easter_days()
>> http://dk.php.net/manual/en/function.easter-date.php
>> http://dk2.php.net/manual/en/function.easter-days.php
>>
> Tak. Dem kigger jeg lige på.
>
Bemærk at easter_date og days bruger præcis samme funktion som jeg
skrev, det er nu bare meget sjovere at se hvordan funktioner gør det
"bagved"
Alle de google steder jeg har fundet med easter 1984 siger alle d. 22
april - så det går jeg pænt udfra er korrekt.
| |
Arne Feldborg (24-06-2010)
| Kommentar Fra : Arne Feldborg |
Dato : 24-06-10 11:58 |
| | |
Martin (24-06-2010)
| Kommentar Fra : Martin |
Dato : 24-06-10 09:00 |
|
On 23-06-2010 09:08, Vagn Kofoed wrote:
> Den 22-06-2010 18:08, Martin skrev:
>> On 22-06-2010 09:11, Vagn Kofoed wrote:
>>> Ligner Gauss' algoritme som man (i hvert fald i "gamle" dage) kunne
>>> finde i Rejse- og skrivkalenderen. I begyndelsen af 80-erne lykkedes det
>>> mig at lave den i en one-liner i APL, som vel er det sjoveste sprog jeg
>>> har programmeret i. Imidlertid fik jeg flere år efter at vide at den
>>> havde regnet forkert i 1984!
>>>
>>> Kunne du ikke checke det for mig?
>>
>> Den giver
>> 1984-4-22
>>
>> Om det så er det rigtige har jeg ingen anelse om :)
>>
>> men iflg
>> http://www.smart.net/~mmontes/freq3.html
>> er det korrekt :)
>
> Tja. Siden viser at du har regnet den rigtigt ud i forhold til
> algoritmen. Det der vist er brug for, er hvad den officielle kalender
> siger.
>
> Hvis man nu tager højde for mulige fejlkilder i forhold til årstallet 1)
> min kilde med oplysningen - 2) min hukommelse, der ikke er hvad den har
> været - må spørgsmålet lyde:
> Hvornår faldt påskedag i følge den officielle kalender i årene 1982 - 1989?
>
> Min Lightning til Thunderbird sætter ikke helligdage så lang tilbage, så
> jeg tror jeg skal have hjælp fra nogen der har arkivalierne i orden.
> Hvis ikke nogen herfra har svaret, er stedet sikkert dk.videnskab.historie.
Lightning kan da også have påske fra 1984 - det eneste lightning kører
på er jo ical datoer, så du skal bare have fat i den korrekte ical - men
så er spørgsmålet jo så om ical filen så viser den korrekt :)
| |
Vagn Kofoed (24-06-2010)
| Kommentar Fra : Vagn Kofoed |
Dato : 24-06-10 06:37 |
|
Den 22-06-2010 18:08, Martin skrev:
> On 22-06-2010 09:11, Vagn Kofoed wrote:
>> Ligner Gauss' algoritme som man (i hvert fald i "gamle" dage) kunne
>> finde i Rejse- og skrivkalenderen. I begyndelsen af 80-erne lykkedes det
>> mig at lave den i en one-liner i APL, som vel er det sjoveste sprog jeg
>> har programmeret i. Imidlertid fik jeg flere år efter at vide at den
>> havde regnet forkert i 1984!
>>
>> Kunne du ikke checke det for mig?
>
> Den giver
> 1984-4-22
>
> Om det så er det rigtige har jeg ingen anelse om :)
>
> men iflg
> http://www.smart.net/~mmontes/freq3.html
> er det korrekt :)
echo date("M-d-Y", easter_date(1984)); som foreslået af Feldborg i
tråden giver => Apr-22-1984. Sagen lukket Gauss havde ret.
| |
Karl Erik Christense~ (05-06-2010)
| Kommentar Fra : Karl Erik Christense~ |
Dato : 05-06-10 19:50 |
|
Den Sat, 05 Jun 2010 19:53:27 +0200 skrev Johan Holst Nielsen:
> I dette tilfælde vil jeg mene en 3-4 mærkedage vil være mere overskuelig
> i en if - mens derover nok vil være mest overskueligt i en switch.
>
> Mvh
> Johan
Er nu nok mest til case så.
If - then - elseif minder mig lidt for meget om Basic
--
Karl Erik.
| |
Karl Erik Christense~ (06-06-2010)
| Kommentar Fra : Karl Erik Christense~ |
Dato : 06-06-10 10:43 |
|
Den Sun, 06 Jun 2010 10:50:47 +0200 skrev Stig Johansen:
> Nu ved jeg ikke hvad du mener med 'mærkedage', men netop påske og
> dearafledte mærkedage er ikke datobestemte.
>
> Netop beregning af disse har været min kæphest siden ca. '84, da det
> samtidig angiver bank/valørdage, som var essentielt for mit virke.
>
> Til dem som ikke ved det, så er det faste mærkedage, samt variable
> mærkedage, hvor påskesøndag er angivet som den første søndag efter
> første fuldmåne efter forårsjævndøgn (dog med nogle begrænsninger).
>
> Resten (langfredag, skærtorsdag samt pinse er påskesøndag+konstant).
>
> Hvis du er interesseret kan jeg muligvis finde noget(pascal) kode til
> disse beregninger, dog uder forudsætningen, at det skulle være skudår i
> år 4840, som jeg ikke har taget hensyn til.
>
> Endvidere blev der rykket adskillige dage i fortiden, som der heller
> ikke er taget hensyn til.
Hej Stig.
På min index side har jeg en php funktion der skriver datoen, Søndag, 6.
Juni 2010. Ikke noget fancy, datoen kan jo ses så mange andre steder, men
jeg ville gerne eksperimentere med php.
I øvrigt har jeg lagt skygge på teksten. Jeg troede det var et HTML5 tag,
men det viser sig at stamme helt fra HTML3. Men IE8 viser det selvf. ikke.
I går, Grundlovsdag, udsprang så ideen om at få en funktion, der tilføjer
det jeg kalder "Mærkedage", samt evt. linke til informationer der
beskriver netop denne danske "Mærkedag", specielt for udenlandske
besøgende - den 15. juni kan de feks. læse om "Valdemarsdag" og det
smukke danske flag "Dannebrog".
Det er således ikke en kalender jeg forsøger at lave, blot det jeg selv
mener er "Mærkedage" (min fødselsdag er en "Mærkedag" for mig, men ikke
for så mange andre ).
Jeg har det med at blive svimmel, hvis jeg tænker på bankdage, valørdage
osv.
Vidste du for øvrigt, at sommeren er varmest på den sydlige halvkugle?
Jorden tilter 23,5 grader, og når den nordlige halvkugle har sommer, er
den længere væk fra solen.
http://www.dmi.dk/dmi/nyd_aarets_laengste_dag_-_sommersolhverv
Sådan kan man også blive klogere af "Mærkedage"
--
Karl Erik.
http://www.ranunkelvej.com
| |
Stig Johansen (07-06-2010)
| Kommentar Fra : Stig Johansen |
Dato : 07-06-10 07:36 |
|
Karl Erik Christensen wrote:
> Jeg har det med at blive svimmel, hvis jeg tænker på bankdage, valørdage
> osv.
Det var ikke min mening at blande disse begreber ind, blot finde ud af hvad
du mente med 'mærkedage'
Her tænkte jeg på mærkedage som Kristi himmelfartsdag, langfredag, samt
pinse, som alle er afledt af påskesøndag (altså + konstant).
Andre mærkedage er faste datoer som grundlovsdag juledage m.v.
Nu skriver Leif andetsteds at der findes en færdig funktion til påskesøndag,
så selve algoritmen er uinteressant, men i '84 var det 'sjovt', da alle
andre (banksystemer) krævede indtastninger årligt.
--
Med venlig hilsen
Stig Johansen
| |
Karl Erik Christense~ (06-06-2010)
| Kommentar Fra : Karl Erik Christense~ |
Dato : 06-06-10 10:57 |
|
Den Sun, 06 Jun 2010 09:43:28 +0000 skrev Karl Erik Christensen:
> Vidste du for øvrigt, at sommeren er varmest på den sydlige halvkugle?
> Jorden tilter 23,5 grader, og når den nordlige halvkugle har sommer, er
> den længere væk fra solen.
> http://www.dmi.dk/dmi/nyd_aarets_laengste_dag_-_sommersolhverv
>
> Sådan kan man også blive klogere af "Mærkedage"
Puha, der fik jeg skrevet noget værre sludder
Jordens bane om solen er elliptisk, og om sommeren på den nordlige
halvkugle, er jorden længst væk fra solen.
--
Karl Erik.
| |
|
|