Frühlingsbeginn entsprechend Schaltjahr zuweisen

Hallo,
ich möchte mit php ein Skript erstellen, welches in meiner Homepage ein Hintergrundbild entsprechend der Jahreszeit austauscht und am betreffenden Beginn-Datum den Hinweis „Heute ist Frühlingsanfang“, „Heute ist Sommeranfang“ usw. ausgibt.
Das klappt für Sommer, Herbst und Winter auch schon ganz gut:
Ich stelle mit date(„L“) fest, ob ein Schaltjahr vorliegt oder nicht und weise dann das entsprechende Beginndatum einer Variablen zu.
Bei Frühling liegt das ganze etwas komplizierter, weil sich das Datum nicht direkt im Schaltjahr, sondern im jeweils davorliegenden Jahr ändert. (Siehe http://de.wikipedia.org/wiki/Jahreszeiten ).

Nach langen Vortext nun meine Wissenslücke:
Wie stelle ich fest, ob das Folgejahr zum aktuellen ein Schaltjahr ist?
Irgendwie bekomme ich das nicht gebacken.

Kennt jemand eine Lösung, oder hat ein funktionierendes Skript?

Ich weiss, es ist vielleicht kleinlich und es wird wohl kaum jemanden auffallen, wenn das Hintergrundbild einen Tag zu früh oder zu spät wechselt, aber mich interessiert einfach die programiertechnische Lösung.

Vielen Dank im voraus,
Jan

guck mal…
string date ( string Format [, int Timestamp])

nu überlegen wir mal weiter… :wink:
mktime – Gibt den UNIX-Timestamp/Zeitstempel für ein Datum zurück
sosoooo :wink:

aber es kommt noch besser *g*
da werden noch Beispiele geliefert…
Beispiel 1. mktime() Beispiel
echo date („M-d-Y“, mktime(0,0,0,12,32,1997));

d.h. für dich müsste das etwa so aussehen

echo date („L“, mktime(0,0,0,03,01,date(Y)-1));

verstanden?

Munich

klappt super…
…danke,

echo date („L“, mktime(0,0,0,03,01,date(Y)-1));

muß nur +1 heissen, weil ich ja das kommende Jahr wissen muß.

ich glaub´ das mit dem timestamp muß ich mir nochmal genauer angucken (bin noch php-Frischling).

Danke nochmal für die prompte Hilfe,
Jan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

funktioniert nur aus anderem Grund nicht…
ich nochmal kurz,
habe jetzt festgestellt, das ich das ganze so gar nicht lösen kann. Wenn man die Tabelle genauer anschaut (http://de.wikipedia.org/wiki/Jahreszeiten),
verschiebt sich das gar nicht so regelmäßig wie ich auf den ersten Blick geglaubt hatte !

":frowning:

Das wird wohl etwas komplizierter, also nicht nur php lernen, sondern auch astronomie?! Wo soll das hinführen?

Kennst Du, oder vielleicht sonst jemand eine Lösung?

Gruß
Jan

Lösungsvorschläge:
tja… das ist natürlich Pech… aaaaaber…

Zitat:
Was ist der Unterschied zwischen dem Frühlingsanfang am 1. März und am 21. März?

Bei dem einen Termin handelt es sich um die meteorologischen Frühlingsanfang, beim anderen Datum um den astronomischen Frühlingsbeginn. Die Meteorologen (genauer: die Weltorganisation für Meteorologie, eine Unterorganisation der UN) haben für sich die Anfänge der Jahreszeiten auf die jeweiligen Monatsanfänge vorverlegt. Das hat ganz praktische Gründe: So ist es beispielsweise leichter, Statistiken (wie etwa Monatsmittelwerte) zu führen und Klimavergleiche anzustellen. (ds/30. Juni 2003)
Sprich: Du kannst entweder den Monatsanfang verwenden und liegst damit auch richtig, oder Du machst es ganz anders…

Dauer der Jahreszeiten

Die astronomischen Jahreszeiten entsprechen jeweils bestimmten Abschnitten der Erdbahn. Da die Erdbahn leicht elliptisch ist, durchläuft sie diese Abschnitte mit variabler Geschwindigkeit, so dass die Jahreszeiten nicht alle gleich lang sind.

Gegenwärtig befindet sich die Erde bei Winterbeginn in der Nähe des Perihels und durchläuft daher Herbst und Winter schneller als Frühling und Sommer. Da das Perihel wegen der Bahnstörungen durch andere Planeten langsam durch die Jahreszeiten wandert, ändern sich auch die Geschwindigkeiten, mit denen die jeweiligen Jahreszeiten durchlaufen werden.

Die Tabelle zeigt die mittlere Dauer der einzelnen Jahreszeiten in Tagen:

Jahr Frühling Sommer Herbst Winter
 -1000 94,25 91,63 88,42 90,94
0 93,96 92,45 88,69 90,13
1000 93,44 93,15 89,18 89,47
2000 92,76 93,65 89,84 88,99
3000 91,97 93,92 90,61 88,74

dann müsstest Du Dir nur einen Zeitpunkt raussuchen und diese Tagesangaben immer wieder aufaddieren.
Im Prinzip also

$differenz = date()-$Dein\_Zeitpunkt (z.b. Frühlingsanfang 1990); //Hier würde ich eigentlich fast mit Timestamps arbeiten weil die leichter zu rechnen sind...
(...) Hier halt irgendwie so umwandeln, dass 1 Einheit = 1 Tag entspricht...
$i = 0;
while ($differenz \> 0)
 {
 $i++;
 if ($i == 1) { 
 $differenz - 92.76;
 if ($differenz \> 0) echo "Es ist Frühling";
 }

 if ($i == 2) { 
 $differenz - 93.65;
 if ($differenz \> 0) echo "Es ist Sommer";
 }

 if ($i == 3) { 
 $differenz - 89.84;
 if ($differenz \> 0) echo "Es ist Herbst";
 }

 if ($i == 4) { 
 $differenz - 88.99;
 if ($differenz \> 0) echo "Es ist Winter";
 $i = 1;
 }
 }

HTH
Munich

Wow, das war jetzt super ausführlich, das muß ich erstmal verdauen.
Ich danke Dir jedenfalls.

Gruß,
Jan