In PHP gibt es keinen Befehl um das Alter anhand eines Geburtsdatums zu errechnen, daher müssen wir uns selbst helfen: Einzige Voraussetzung ist ein gültiges Datum im Format "YYYY-MM-DD" (also Jahr-Monat-Tag). Dies ist zum Beispiel das standard Date-Format der freien Datenbank MySQL.
<?php
// Funktion deklarieren
function alter($datum)
{
list($y, $m, $d) = explode('-', $datum);
$alter = date('Y') - $y;
$monat = date('m');
if ($monat < $m or ($monat == $m and $d > date('d'))) {
$alter--;
}
return $alter;
}
// Datum festlegen
$datum = '1910-08-27';
// Funktion aufrufen
echo alter($datum);
?>
Das Beispieldatum — der 27. August 1910 — zeigt übrigens das Geburtsdatum von Agnes Gonxhe Bojaxhiu, der Friedensnobelpreisträgerin Mutter Theresa.
Vorteile dieser Variante und Alternativen
Eine der geläufigsten Alternativen für dieses Skript funktioniert folgendermassen:
- Aktuelles und Geburtsdatum per mktime() in Unix Timestamps umrechnen
- Die Differenz der beiden Zahlen durch 86400*365 (Anzahl Sekunden pro Jahr) teilen
- Das Resultat wird abgerundet: Man hat das Alter errechnet
Mit dieser Methode kann man das Alter von Personen welche vor dem 1. Januar 1970, 00:00:00 Uhr GMT (= Greenwich Mean Time, mittlere Greenwich-Zeit) geboren wurden nicht bestimmen. Der Grund: In PHP werden die Zeiten generell in Sekunden ab dem oben erwähnten Zeitpunkt berechnet. Der Befehl mktime() kann nicht mit negativen Werten umgehen, sondern gibt false zurück, wenn die Parameter ungültig oder "zu alt" sind.
Mit der ganz oben erklärten Methode tritt dieses Limit nicht auf, da mktime nicht verwendet wird. Ausserdem muss weniger gerechnet werden und das Alter wird somit schneller zurückgegeben. Fazit: Meine Funktion ist besser :-)