Thomas Mell: Datum/Zeitformat RFC-822 umwandeln

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

  1. 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.

    1. 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

      1. 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.