Datum (Jahreszahl) formatieren

Robert Steichele

Erfahrenes Mitglied
Ich habe ein Feld, in welches die Anwender eine Jahreszahl eingeben können. Für die Datenbank benötige ich diese Zahl zwingend 4-stellig (z.B. 2005).
Ich möchten den ANwendern nicht vorschreiben, die Zahl 4-stellig eingeben zu müssen. D.h. es werden dann auch Eingaben wie z.B. 5 oder 05 gemacht. Ist es möglich diese Eingaben dann in die 4-stellige Jahreszahl umzuwandeln?
 
So vielleicht?
PHP:
if ($zahl < 100) {
    $zahl += (($zahl<10)?2000:1900);
}
In dem Beispiel ist es so, dass der Zahlenbereich von 1910 bis 2009 geht.
Gruß hpvw
 
Funktioniert perfekt.
Die zweite Zeile davon kapier ich aber nicht, was genau passiert da?

Wenn die Jahreszahlen mit 19 vorne nicht mehr relevant wären, könnte man den Code dann so umbauen, dass z.B. auch 2011 funktioniert?

Wie schon gesagt, ich steig nicht so ganz hinter die zweite Zeile :(

Gruß und Danke
Robert
 
OK, hab die Lösung jetzt selbst gefunden.

Code:
if ($zahl < 1000) {      
  $zahl = $zahl + 2000;   
}

Eigentlich total logisch, stand wohl auf dem Schlauch.

Funktioniert jetzt von 2000 bis 2999 :)
Sollte wohl reichen

Gruß
Robert
 
Der Vollständigkeit halber, die Erklärung zur 2. Zeile:
PHP:
$zahl += [irgendwas]; 
//entspricht:
$zahl = $zahl + [irgendwas];

//Der Ausdruck hinter dem Gleichheitszeichen
//nennt sich "ternärer Ausdruck"
$variable = (($zahl<10)?2000:1900)
//entspricht:
if ($zahl < 10) {
    $variable=2000;
} else {
    $variable=1900;
}

//Kombiniert man beides, so ergibt sich aus
if ($zahl < 100) {
    $zahl += (($zahl<10)?2000:1900);
} 
//folgendes Equivalent:
if ($zahl < 100) {
    if  ($zahl < 10 {
        $zahl = $zahl + 2000
    } else {
        $zahl = $zahl + 1900
    }
}
Die 10 kann man dann entsprechend verändern, um die kleinen Werte beliebig auf das 20. und 21. Jahrhundert zu verteilen, je nach dem ob die Jahre eher in der Zukunft (Kalender) oder in der Vergangenheit (Geburtstage) liegen.

Gruß hpvw
 
Ist ja schön und gut, aber was machst du wenn der User zum Beispiel 11 einträgt, meint er dann 1911 oder 2011? wenn er vom Kalender ausgeht meint er wohl eher 2011 (was ja nicht so weit in der Zukunft liegt). Aber du würdest in deinem Programmcode davon ausgehen das der User 1911 meint. Da steckt also noch ein logischer Fehler drin.
 
Deswegen habe ich das ja auch erwähnt. Je nach Anwendung muss man sich halt überlegen, welcher Wert an der Stelle Sinn macht. Da steckt kein logischer Fehler drin, sondern eine Möglichkeit zum Konfigurieren.

Gruß hpvw
 
Er hat ja auch geschrieben, dass der Code von 1910-2009 funktioniert. Ob 1911 oder 2011 wird man mit PHP nicht feststellen können.

Zum Glück benötige ich den Code für eine Terminliste unseres Vereins, und da wird wohl keiner mehr Termine mit 19xx eintragen.
 
Zuletzt bearbeitet:
Zurück