Heraufinden, ob Jahr ein Schaltjahr ist.
Benedikt Hermann
- php
0 srob0 Benedikt Hermann0 Julian Hofmann0 Benedikt Hermann0 Harry
0 Goofy0 ulimativ
Hallo,
wie kann ich herausfinden ob das aktuelle Jahr ein Schaltjahr ist?
Vielen Dank
Benedikt Hermann
Hallo Benedikt,
wie kann ich herausfinden ob das aktuelle Jahr ein Schaltjahr ist?
indem man im 3. Schuljahr aufgepaßt hast oder zum Beispiel hier http://th-o.de/kalender.htm nachliest.
HTH Robert
indem man im 3. Schuljahr aufgepaßt hast oder zum Beispiel hier http://th-o.de/kalender.htm nachliest.
Ich meine mittels PHP herausfinden!
Hallo Benedikt,
unter angegebenem Link steht u.a.
" * Besonderheit Schaltjahr, es gelten folgende Regeln:
Es ist ein Schaltjahr jedes Jahr bei dem die Jahreszahl
o durch 4 teilbar ist und
o nicht durch 100 teilbar ist (also nicht 1700, 1800, 1900) oder
o bei dem sie durch 400 teilbar ist (2000).
"
Also in PHP
if($aktuellesJahr % 4 == 0) mögliches Schaltjahr
Jetzt das ganze noch prüfen ob das Jahr auch durch 100 teilbar ist (und aufgeht). Das ganze noch kombinieren mit der Alternative durch 4 und durch 100 teilbar (also durch 400). Und schon sind wir fertig.
Wo war das Problem mit PHP?
Grüße aus Würzburg
Julian
Hallo,
if($aktuellesJahr % 4 == 0) mögliches Schaltjahr
Warum ergiebt das Ergebnis 0, falls das aktuelle Jahr durch 4 Teilbar ist?! Steh ich irgendwie aufm Schlach.
Jetzt das ganze noch prüfen ob das Jahr auch durch 100 teilbar ist (und aufgeht). Das ganze noch kombinieren mit der Alternative durch 4 und durch 100 teilbar (also durch 400). Und schon sind wir fertig.
hi nochmal
% ist de modulo operator, modulo ergibt null wenn die vordere Zahl durch die hintere Zahl teilbar ist, also eine natürliche zahl herauskommt, ansonsten gibt es den Rest der Division aus.
also ist net so schwer wie es aussieht
ulimativ
p.s. der == operator weist nichts zu sondern vergleicht
Hi,
Man macht Ihr das kompliziert!
In PHP gibts doch ne praktische Methode dafuer!
Kurze Fakten;
Ein Schaltjahr hat immer nen 29.Februar
Daran erkennt man es glaub ich am besten.
Code:
<?
$year = date(Y);
if (checkdate(2,29,$year)) { echo $year." ist ein Schaltjahr."; }
else { echo $year." ist kein Schaltjahr."; }
?>
Mit date(Y) bekommst du das aktuelle Jahr zurueck.
Grüße,
DaLindi
---------------------------------------------------------------------
Visit my Page! http://www.beblue.net
Hi,
Man macht Ihr das kompliziert!
In PHP gibts doch ne praktische Methode dafuer!
Hi,
danke. Ist echt super einfach ;-)
Holla
Jetzt das ganze noch prüfen ob das Jahr auch durch 100 teilbar ist (und aufgeht). Das ganze noch kombinieren mit der Alternative durch 4 und durch 100 teilbar (also durch 400). Und schon sind wir fertig.
Äh ... eine Zahl, die durch 100 ohne Rest teilbar ist ist immer auch durch 4 ohne Rest teilbar.
Die Abfrage wäre also:
if((($jahr % 4 == 0) && ($jahr % 100 != 0)) || ($jahr % 400 == 0))
echo "Schaltjahr";
Ciao,
Harry
Servus
dann wollen wir da mal nachhelfen
if ($jahr%4==0)
{
if ($jahr%100==0)
{
if (($jahr/100)%4==0)
$schaltjahr=true;
else
$schaltjahr=false;
}
else
$schaltjahr=true;
}
else
$schaltjahr=false;
müßte eigentlich so passen. Habs jetzt nicht ausprobiert
Und tschüß
Grüße aus Fellbach
Goofy
Servus
dann wollen wir da mal nachhelfen
Vielen Dank! Hat funktioniert.
Bene
Servus
dann wollen wir da mal nachhelfen
if ($jahr%4==0)
{
if ($jahr%100==0)
{
if (($jahr/100)%4==0)
$schaltjahr=true;
else
$schaltjahr=false;
}
else
$schaltjahr=true;
}
else
$schaltjahr=false;
müßte eigentlich so passen. Habs jetzt nicht ausprobiert
Hallo zusammen,
das Prob hatte ich schon mal vor laaanger Zeit. Da habe ich diese Formel von der PTB bekommen. Die waren so nett. Funktioniert natürlich auch.
Ich habe dann aber herausgefunden, dass das bei der Berechnung von Datumsreferenzzahlen (der erste Tag im Jahre 1 hat den Wert 1) und der Rückrechnung ganz schön die Performance killt und da ist die billige Tabellenmethode ein enormes Tuning.
Rechne Die also besser die paar Jahre aus, die du im Focus hast und mach Dir eine direkt indizierbare Tabelle. so von 1800 bis 2199 sind das man gerade 400 Byte oder eigentlioch ja nur 400 Bit, wenn mans unbedingt darauf anlegt.
Gruß
Tom
Holladiri
if ($jahr%4==0)
{
if ($jahr%100==0)
{
if (($jahr/100)%4==0)
$schaltjahr=true;
else
$schaltjahr=false;
}
else
$schaltjahr=true;
}
else
$schaltjahr=false;
Das geht auch kürzer ;-)
if((($jahr % 4 == 0) && ($jahr % 100 != 0)) || ($jahr % 400 == 0))
echo "Schaltjahr";
Ciao,
Harry
Hi
die date() dunktion sollte dir helfen. schau doch einfach mal im manual nach. www.php.net/manual/de
Uli