Heute bin ich bei einer Datumsberechnung auf das Problem gestoßen, wie ich ordnungsgemäß das Schaltjahr berechne. Da dies gewisse Regeln hat und es keine explizite Funktion in der Programmiersprache PHP gibt, muss man sich auf anderen wegen behilflich sein.
Da ich selbst mich noch nie damit beschäftigt habe, musste ich erst selber diesbezüglich mich mit den Regeln befassen. Es hatte sich bereits Wolfgang in unserer News Rubrik mit der Berechnung des Schaltjahrs beschäftigt. Diese Funktion wurde aber nicht unbedingt optimal und ausführlich erklärt, daher dachte ich mir, dass ich diesbezüglich ein eigenständiges Tutorial verfasse.
Also kommen wir mal auf den Nenner, wenn man ein Schaltjahr berechnen möchte, muss man folgende Regeln anwenden.
- Das Jahr muss ohne Rest durch vier teilbar sein.
- Ist das Jahr durch 100 teilbar, so handelt es sich um keinen Schaltjahr
- außer es ist durch 400 teilbar
Dazu habe ich eine kleine selbstdefinierte PHP-Funktion erstellt, um zu ermitteln, ob das aktuelle Jahr ein Schaltjahr ist. Diese Funktion überprüft das Datum, was übergeben wurde und arbeitet die oben aufgeführten drei Regeln ab. Danach ergibt die Funktion ein true oder false zurück. Wenn das Jahr, was der Funktion übergeben wurde ein Schaltjahr ist, so bekommen wir ein true zurück.
Nun zu der angepriesenen PHP Funktion:
<?php
/*
* Created on 08.01.2010 by Nico Schubert
*/
function schaltjahr_ermitteln($jahr) {
/**
* Als erstes formatieren wir mit der Funktion
sprintf() den Inhalt in der Variable
$jahr auf eine Zahl die vier Stellen hat.
Sollte keine Zahl übermittelt werden bei
dieser Funktion, formatiert die Funktion
den Inhalt automatisch auf 0000.
*/
$jahr = sprintf("%04d", $jahr);
/**
* Nun prüfen wir die Zahl in der Variable
$jahr ob diese 0000 ist mit einer IF
Anweisung. Wenn dies der Fall ist Beenden
wir die Funktion umgeben ein false zurück.
*/
if ($jahr == '0000') {
return FALSE;
}
/**
* Jetzt prüfen wir den Inhalt in der Variable
$jahr, ob dieser durch ist 4 teilbar ist
und der Inhalt nicht durch 100 teilbar
ist, außer es ist durch 400 teilbar.
Danach beenden wir die Funktion und geben
ein entsprechendes true oder false zurück.
*/
if (($jahr % 400) == 0 || (($jahr % 4) == 0 &&
($jahr % 100) != 0)) {
return TRUE;
} else {
return FALSE;
}
}
/**
* Beispiel für dieses Jahr, wir speichern als
erstes in der Variable $dieses_jahr die
Jahreszahl. Die Jahreszahl ermitteln wir mit
der PHP Funktion date().
*/
$dieses_jahr = date("Y");
/**
* Jetzt geben wir einen Text mit Echo aus und
prüfen zusätzlich über eine
Trinitäts-Operator welchen Wert die Funktion
vom übermittelten Jahr zurück gibt.
*/
echo 'Das Jahr '.$dieses_jahr.' ist
'.((schaltjahr_ermitteln($dieses_jahr) ==
true) ? 'ein Schaltjahr' : 'kein
Schaltjahr').'.<br>';
/**
* Nun ermitteln wir das aktuelle Jahr über die
PHP-Funktion date() und ziehen ein Jahr ab,
danach speichern wir die Jahreszahl in der
Variable $letztes_jahr.
*/
$letztes_jahr = (date("Y")-1);
/**
* Wie bei den aktuellen Jahr, geben wir wieder mit
dem Befehl echo unseren Text aus.
*/
echo 'Das Jahr '.$letztes_jahr.' ist
'.((schaltjahr_ermitteln($letztes_jahr) ==
true) ? 'ein Schaltjahr' : 'kein
Schaltjahr').'.<br>';
/**
* Das Jahr 2012 ist ein Schaltjahr, also testen
wir dies mal. Dazu speichern wir die
Jahreszahl 2012 in der Variable $jahr.
*/
$jahr = 2012;
/**
* Da unser Jahr ein Schaltjahr ist, werden wir in
diesem Fall von der selbst definierten
PHP-Funktion schaltjahr_ermitteln() ein true
Zurück erhalten, daher wird bei den
Trinitäts-Operator der true Weg ausgegeben.
*/
echo 'Das Jahr '.$jahr.' ist
'.((schaltjahr_ermitteln($jahr) == true) ?
'ein Schaltjahr' : 'kein Schaltjahr').'.<br>';
?>
Ausgabe:
Das Jahr 2010 ist kein Schaltjahr.
Das Jahr 2009 ist kein Schaltjahr.
Das Jahr 2012 ist ein Schaltjahr.
So nun sollten eigentlich keine Fragen aufkommen, wenn jemand dennoch die ein oder andere Frage zu diesen Thema hat, kann dieser gern unser Forum nutzen. Nachfolgend findet ihr noch eine Liste, der verwendeten PHP-Funktionen in diesem Tutorial.
Die verwendeten PHP-Funktionen:
echo - Mit dieser PHP-Funktion kann man einen Text ausgeben.
IF Anweisung - Hier finden sie eine Erklärung, wie man mit einer IF Anweisung arbeitet.
function() - Erklärung wie man in PHP eine function() erstellt und verwenden kann.
date() - Hier wird erklärt, wie man mit der PHP Funktion date() arbeiten kann.