Datum/Zeitformat RFC-822 umwandeln
Thomas Mell
- php
Hallo,
kennt jemand ein Codeschnipsel, Klasse etc. mit der man das Datum/Zeitformat RFC-822 entweder in ein für PHP lesbares Datum/Zeitformat umwandelt, oder auf korrekte Syntax und Werte überprüft?
Vielen Dank schon mal
Thomas Mell
Hi,
kennt jemand ein Codeschnipsel, Klasse etc. mit der man das Datum/Zeitformat RFC-822 entweder in ein für PHP lesbares Datum/Zeitformat umwandelt, oder auf korrekte Syntax und Werte überprüft?
beides kannst du mit strtotime() erreichen, welche dir einen Timestamp zurückgibt, siehe http://de.php.net/manual/de/function.strtotime.php. Wenn die Syntax nicht korrekt ist, wird die Funktion -1 zurückgeben.
Gruß,
Andreas.
Hi,
beides kannst du mit strtotime() erreichen,
Diese Funktion habe ich schon ausprobiert, sie funktioniert aber nicht richtig.
Überprüfe ich 'Tue, 32 Jul 2004 23:33:60 +0200' gibt mir die Funktionen keinen Fehler aus sondern den Timestamp vom 'Aug 01 2004 23:34:00'.
Ich brauche aber eine Möglichkeit die Daten auf gültige Werte zu überprüfen. RegExp scheiden aus, da die Syntax von RFC-822 ziemlich komplex sein kann (habe ich gelesen).
Grüße
Thomas Mell
Hi,
Diese Funktion habe ich schon ausprobiert, sie funktioniert aber nicht richtig.
Überprüfe ich 'Tue, 32 Jul 2004 23:33:60 +0200' gibt mir die Funktionen keinen Fehler aus sondern den Timestamp vom 'Aug 01 2004 23:34:00'.
ja, das habe ich übersehen, da es m.E. keinen wirklichen Fehler darstellt, sondern so gewollt ist - mktime() operiert genauso.
Ich brauche aber eine Möglichkeit die Daten auf gültige Werte zu überprüfen. RegExp scheiden aus, da die Syntax von RFC-822 ziemlich komplex sein kann (habe ich gelesen).
Um o.g. Fehler ebenfalls auszuschließen, könntest du den von strtotime() erhaltenen timestamp wieder in eine RFC-822-Zeichenkette umwandeln und mit der vorherigen vergleichen:
<?php
$rfcTime = 'Tue, 32 Jul 2004 23:33:60 +0200';
$timestamp = strtotime($rfcTime);
$rfcCheck = (-1 != $timestamp)
? date('r', $timestamp) // $rfcCheck ist nun == 'Sun, 1 Aug 2004 23:34:00 +0200'
: '';
if ($rfcTime != $rfcCheck)
{
// Fehler
}
?>
oder so ähnlich...
Gruß,
Andreas.