MySQL-Timestamp formatiert ausgeben

Der MySQL-Timestamp gibt das Datum im Format "20041027123315" aus. Es gibt verschiedene Möglichkeiten (explode, ...), um dieses Datum etwas leserlicher zu gestalten. Am einfachsten erscheint mir der Einsatz von Regular Expressions: 

 

<?
$date="20041027123315";
print preg_replace("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/",
 "\$3.\$2.\$1 \$4:\$5",$date)."\n";
?>

 

Dies ergibt folgenden Output: 

27.10.2004 12:33


 

Erklärung zum Ausdruck:

print preg_replace("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/","\$3.\$2.\$1 \$4:\$5",$date)."\n"; 

Mit print (oder echo) wird PHP angewiesen, das Ergebnis auf den Bildschirm auszugeben

 

print preg_replace("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/","\$3.\$2.\$1 \$4:\$5",$date)."\n"; 

Mit "\n" wird in der Ausgabe des Quelltextes ein Zeilenumbruch gesetzt.
Dies dient der Lesbarkeit des Quelltextes, kann aber weggelassen werden.

 

print preg_replace("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/","\$3.\$2.\$1 \$4:\$5",$date)."\n"; 

Mit preg_replace wird ein regulärer Ausdruck gesucht ersetzt
  



Konzentrieren wir uns nun auf die Zeichenkette des Ausdrucks.

print preg_replace("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/","\$3.\$2.\$1 \$4:\$5", $date)."\n"; 


Sie besteht aus 3 Teilen. 

Suchmuster
Ersatz
Zeichenkette


  

  

 

Der Timestamp 20041027123315 beinhaltet: 


  

20041027123315   das Jahr   à  4 Zahlen
20041027123315   den Monat   à  2 Zahlen
20041027123315   den Tag  à  2 Zahlen
20041027123315   die Stunden  à  2 Zahlen
20041027123315   die Minuten  à  2 Zahlen
20041027123315   die Sekunden  à  2 Zahlen


Das Suchmuster (\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}) liefert uns die gewünschten Zeichenabschnitte 
  

(\d{4})   das Jahr ist das   erste Ergebnis
(\d{2})  der Monat ist das   zweite Ergebnis
(\d{2})  die Tage sind das   dritte Ergebnis
(\d{2})  die Stunden sind das  vierte Ergebnis
(\d{2})  die Minuten sind das  fünfte Ergebnis
(\d{2})  die Sekunden sind das  sechste Ergebnis



Wir haben somit 20041027123315 in sechs Teile zerlegt.  (2004  10  27  12  33  15 )

Diese sollen nun neu zusammengestellt werden. 

Gewünscht ist der Tag, der Monat und das Jahr, dann die Uhrzeit. 

Das entspricht dem Ergebnis 3 (Tag), 
dann Ergebnis 2 (Monat), 
und nun dem Ergebnis 1 (Jahr). 
Dazwischen soll, wie es sich für ein Datum gehört, ein Punkt stehen. 
Es folgt ein Leerzeichen, um das Datum von der Zeit optisch zu trennen, und dann das Ergebnis 4 und 5, in der die Uhrzeit zu finden ist.


 

Aus 20041027123315 wird somit 27.10.2004 12:33

 

... und die Sekunden?

Diese haben wir schlicht ignoriert. Folgendes Script gibt auch die Sekunden aus.
(Es wurde absichtlich eine etwas andere Schreibweise gewählt.)

<? 
$date="20041027123315"; 
print preg_replace("!(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})!", 
"$3.$2.$1 $4:$5 und $6 Sekunden.",$date); 
?>


 

PHP-Code: Copyright (c) by Mario Wagner, Degersheim 2004

PHP-Erläuterung: Copyright (c) by Mario Wagner, Degersheim 2004, Martin Scheiben, Herisau, 2004

Diese Seite sollten Sie im Querformat drucken !