(1 Advent) Datum Ermitteln, Errechen. Wie?

gixnetwork

Erfahrenes Mitglied
Hallo

Ich versuche ein bild einzubauen, nämlich am 1. Advent.

Für Halloween ist das kein Problem, da es IMMER am 31.10.xxxx ist.
PHP:
$idtag = date("d", strtotime("now"));
$idmonat  = date("m", strtotime("now"));

if ($idtag == 31)
{
if ($idmonat == 10)
{
echo "<div id='Layer1' style='position:absolute;left:225px;top:98px;width:145px;height:145px;z-index:5'><img src='gif/event/halloween.gif' width='145' height='145' align='absmiddle'></div>";
}
}

Der erste Advent ist IMMER ein anderes Datum.
Der erste Advent ist Fast IMMER in einer anderen Kalenderwoche.

Sonntag vor oder am 24.12.xxxx ist IMMER der 4. Advend. oder? gibts ne einfacheren lösungs ansatz?

Grüsse aus Frauenfeld, Schweiz
 
Zuletzt bearbeitet:
Hi

mit der Gaußschen Wochentagsformel (https://de.wikipedia.org/wiki/Gaußsche_Wochentagsformel#Formel)
kann man für ein gegebenes Datum den Wochentag ausrechnen, zB. für den 24.12 des betroffenen Jahres.
Aufpassen aufs Abrunden, und dass negative Moduloergebnisse wieder ins Positive umgerechnet werden
(Wenn c=a%b und c<0 dann ist das richtige Ergebnis c+b)

Der 4. Advent ist der letzte Sonntag vor 24.12 (ggf. der 24.12 selber, wenn Sonntag)
Der 1. Advent ist eben 21 Tage vorher (kann auch in den November fallen, November hat 30 Tage, klar)

Hier auch noch was zum Lesen für die kirchlichen Regeln, wann was ist:
http://www.dagmar-mueller.de/wdz/html/feiertagsberechnung.html

Wenn ich Zeit hab folgt in Kürze ein Code...
 
Ungetestet:
PHP:
function mathmod($v, $m)
{
    $v = $v % $m;
    if($v < 0) $v = $v + $m;
    return $v;
}
function gausswota($d, $m, $j)
{
    $fakem = mathmod($m - 3, 12) + 1;
    if($m < 3) $j--;
    $y = $j % 100;
    $c = floor($j / 100);
    $ret = $d + floor(2.6 * $m - 0.2) + $y + floor($y / 4) + floor($c / 4) - 2 * $c;
    return mathmod($ret, 7);
}
function advent1($j)
{
    $wota24 = gausswota(24, 12, $j);
    $adv4 = 24 - $wota24;
	$adv1 = $adv4 - 21;
	if($adv1 > 0) return $adv1;
	$adv1 = $adv1 + 30;
	return $adv1;
}
advent1 mit der Jahreszahl aufrufen, zB. advent1(2015).
Der Returnwert ist der Tag; wenn 1-24 dann ist Dezember gemeint, sonst November.
 
Zuletzt bearbeitet:
So, ich gebe auf.
Ist für mich Persönlich zu schwierig.

Ich Liebe Jede Herausforderung, aber hier sehe ich kein licht an Tunnel ende.
Vorerst kapituliere ich.
 
Was spricht dagegen die 4 Daten pro Jahr einfach manuell einzutragen? :D Mach es für 10 Jahre im Voraus (40 Daten) und fertig...

Sonst...

PHP:
echo "1. Advent: ",date("d.m.Y",strtotime("+1 sunday",mktime(0,0,0,11,26,date("Y"))),"<br />";
echo "2. Advent: ",date("d.m.Y",strtotime("+2 sunday",mktime(0,0,0,11,26,date("Y"))),"<br />";
echo "3. Advent: ",date("d.m.Y",strtotime("+3 sunday",mktime(0,0,0,11,26,date("Y"))),"<br />";
echo "4. Advent: ",date("d.m.Y",strtotime("+4 sunday",mktime(0,0,0,11,26,date("Y"))),"<br />";
 
Zuletzt bearbeitet:
Warum 26.11? Ganz so jahresunabhängig ist das nicht.

Aber ja, das fixe Eintragen für die nächsten 10 Jahre geht auch :D
 

Neue Beiträge

Zurück