Geschrieben von browserdune am 19.01.2006, 07:47

Die TIMESTAP-Formate bei MySQL und PHP sind nicht gleich:
- Bei PHP ist der TIMESTAMP eine integer Zahl die die Sekunden angibt die seit dem 01.Januar 1970 vergangen sind. Damit lässt sich das gegebenen Datum im TIMESTAMP errechnen.
- Bei MySQL ist der TIMESTAPM ein String in der Form "0000-00-00 00:00:00".

Bei Formate haben ihre Vorteile:
- Bei PHP kann man sehr einfach Formatierungsfuktionen benutzen um das Datum in der gewünschten Form auszugeben. Auch Berechnungen sind anhand der Sekunden möglich.
- Bei MySQL kann man den TIMESTAMP bei einem UPDATE des Datensatzes austomatisch auf die aktuelle ZEit setzen lassen.

Doch wie bekommt man jetzt den MySQL-TIMESTAMP so einfach formatiert wie den von PHP ohne aufwändige Stringoperationen?

Dafür kann man genau die gleichen Funktionen verwenden wie für PHP. Voraussetzung ist jedoch das man den MySQL-TIMESTAMP in einen PHP-TIMESTAMP (Integerwert) umwandelt. Die geschieht mit Hilfe dieser Funktion:

int strtotime( string datum )
RÜCKGABEWERT:
Ein String, der den Zeitstempel für das angegebene Datum enthält oder -1, flls die Umwandlung nicht möglich ist.
Zu beachten ist, dass die Funktion ein nach der GNU-Syntax formatiertes Datum als Einagbe erwartet (wie bei MySQL-TIMESTAMP).

Nun kann man wie gewohnt den PHP-TIMESTAMP für die Ausgabe formatieren. Dafür bietet sich die folgende Funktion an:

string date( string format, int timestamp )
RÜCKGABEWERT:
Ein String der nach dem String format formatierte Datum aus dem Timestamp enthält.

Der Formatstring kann folgende Möglichkeiten enthalten:

a - am / pm
A - AM / PM
B - Swatch Zeit: 000 - 999
d - Tag: 01 - 31
D - Tag: Mon - Sun
F - Monat: January - December
g - Stunden: 1 - 12
G - Stunden: 0 - 23
h - Stunden: 01 - 12
H - Stunden: 00 - 23
i - Minuten: 00 - 59
I - Sommerzeit: 0 / 1
j - Tag: 1 - 31
L - Schaltjahr: 0 / 1
m - Monat: 01 - 12
M - Monat: Jan - Dec
n - Monat: 1 - 12
O - GMT Zeitunterschied
r - RFC-822-Datum
s - Sekunden: 01 - 59
S - Sekunden: 1 - 59
t - Zahl der Tage im Monat: 28 - 31
T - Zeitzone
w - Wochentag: 0(Sonntag) - 6(Samstag)
W - ISO-8601-Wochennummer des Jahres ( Woche beginnt am Montag )
Y - Vierstallige Jahreszahl
y - Zweistellige Jahreszahl
z - Tag im Jahr: 0 - 365
Z - Zeitzonenoffset in Sekunden; West = positiv, Ost = Negativ

Auf diese Art und Weise ist es natürlich auch möglich einen PHP-TIMESTAMP in einen MySQL-TIMESTAMP umzuwandeln.

// Umwandlung des aktuellen Datums ( now() ) nach MySQL
// Zeigt auch die Formatierung eines PHP-TIMESTAMP
$PHP_to_MySQL = date( "Y-m-d H:i:s", now( ) );

// Umwandlund nach PHP
$MySQL_to_PHP = strtotime( $PHP_to_MySQL );

MfG

Bewertung Anzahl
3
100,0 %
1 Bewertungen