Date Time in PHP
Date und Time spielen bei Nutzeroberflächen eine große Rolle und man stößt so ziemlich bei jeder Applikation auf die selben Probleme.
Problem:
GUI mit zwei Input Feldern, eins für das Datum und eins für die Zeit.
- Wie bekommt man Datum und Zeit aus einer Web-Oberfläche zu einem MySQl-Timestamp
- Wie bekommt man sie wieder aus der Datenbank in in die Inputfelder
Lösung:
Inputformat vom Datum ist 04.03.2010 also d.m.Y
Inputformat von der Zeit ist 13:38:02 also H:i:s
Als erstes Daten von der Web-Oberfläche empfangen und als ein String verpacken.
WebGUI –> PHP –> MySQL-DB
{code type=PHP}
…..
<input type=“text“ id=“datum_start“ name=“datum_start“ value=“04.03.2010″ />
<input type=“text“ id=“zeit_start“ name=“zeit_start“ value=“13:38:02″ />
….
{/code}
Backend
{code type=PHP }
…
$datum_zeit_start = $this->input->post(‚datum_start‘).“ „.$this->input->post(‚zeit_start‘);
…
{/code}
steht in Codeigniter für
Dann kann man den String in einen Timestamp wandeln und diesen in das gewünschte Format überführen
{code type=PHP}
$timestamp_ready_for_db = date(„Y-m-d H:i:s“,strtotime($datum_zeit_start));
{/code}
Jetzt kann der Timestamp in die Datenbank geschrieben werden.
MySQL-DB –> PHP–>WEB-GUI
Im nächsten Schritt soll das Datum und die Zeit wieder aus der DB in die Inputfelder gelangen.
Dies geht etwas einfacher man liest die Datum-Zeit Spalte aus und wandelt sie folgendermaßen um.
{code type=PHP}
$datum = strftime(„%d.%m.%Y“,strtotime($timestamp_from_db));
{/code}
{code type=PHP}
$zeit = strftime(„%H:%M:%S“,strtotime($timestamp_from_db));
{/code}
strftime gibt einen String zurück der den Formatierungs-Merkmalen entspricht.
strtotime — Wandelt ein beliebiges in englischer Textform angegebenes Datum in einen UNIX-Zeitstempel (Timestamp) um (Quelle: php.net)
Ich hoffe jemanden hilft dieses kleine Beispiel und evtl. gibt es ja Verbesserungsvorschläge