Day: October 26, 2012

CoSchni#9: Deutsches Datumsformat in MySQL Datenbank ablegen

Bevor das Datum aus der Datenbank gelesen werden kann, muss es natürlich erstmal abgespeichert werden. Das DD.MM.YYYY Datumsforamt muss in das MySQL kompatible Format umgewandelt werden, damit später die von MySQL angebotenen Zeitfunktionen genutzt werden können. Die unten stehende Funktion erwartet ein Datum im Format 24.12.2000 bzw. kann auch noch eine Zeitangabe im Format HH:MM:SS bzw. 09:30:15 mit übergeben werden.

[PHP]
static function GermanToMy($date, $time =””) {

$d = explode(“.”,$date);

return sprintf(“%04d-%02d-%02d”, $d[2], $d[1], $d[0]).$time;
}
[/PHP]

CoSchni#8: Datum von MySQL nach JavaScript konvertieren

Dynamische Seiten werden greifen häufig auf JavaScript zurück. Diagramme und Tabelle die auf der X-Achse ein Datumsbereich haben, bzw. eine Spalte mit Datum benötigen die Angabe dann in einem JavaScript kompatiblen Format, damit es korrekt sortiert bzw. angezeigt werden kann. Nachfolgend ein Code Schnippsel, welcher mittels PHP das Datum automatisch von MySQL-Format ins JavaScript-Format umwandelt.

[PHP]
static function MyToJS($time){

$peaces = explode(“-“,substr($time,0,10));

return $peaces[0].”, “.(int)$peaces[1].” -1, “.(int)$peaces[2];
}
[/PHP]

CoSchni#7: Datum von MySQL nach PHP konvertieren

Immer mal wieder müssen Datums- und Zeitangaben aus MySQL gelesen und in PHP bearbeitet oder zur Augabe gebracht werden. Dabei stellt sich grundsätzlich die Frage wie speichere ich das Datum- bzw. die Zeitangabe in der Datenbank. Aus meiner Sicht gibt es nur eine korrekte Antwort: Datum- und Zeitangaben sollten immer MySQL bzw. in dem Datenbank spezifischen Format gespeichert werden. Die Speicherung des UNIX-Timestamp oder anderer Formate erhöht spätestens beim Debuggen den Aufwand enorm. Zudem können, wenn MySQL das Datums-Format nicht unterstützt, keine der nützlichen Time-Funktionen von MySQL benutzt werden.

Nachfolgend eine Funktion, die den übergebenden MySQL-String umwandelt:

[PHP]
static function MyToPHP($time, $withminutes = FALSE){

$unixtime = strtotime($time);

if($withminutes){
$stamp = date( ‘d.m.Y H:i:s’, $unixtime );
}else{
$stamp = date( ‘d.m.Y’, $unixtime );
}

return $stamp;
}
[/PHP]