Mailinglisten-Archive |
Carsten Brenner schrieb am Donnerstag, den 9. September 1999: > Wie kann ich in PHP ein Datums-String umstricken z.B. > > "Mon Aug 23 04:02:01 1999" > > in ein Format dass MySQL in einem DateTime Feld akzeptiert?? Es geht vermutlich um Daten aus der "Date:"-Headerzeile von Internet-E-Mails? Dann ist das gar keine so leichte Aufgabe, weil Dein Beispiel nur eines von unzählig vielen Formaten darstellt, die in Gebrauch sind - und Du müßtest prinzipiell alle erkennen können ... Wenn Deine Daten wirklich in genau obigem Format sind, dann kannst Du das relativ leicht umrechnen. Die einzige kleine Hürde ist der Monatsname, aber mit Hilfe eines assoziativen Arrays ist auch das schnell gelöst: // Vorbereitung: Zuordnungstabelle Monatskürzel -> Monatsnummer. $monat = array('JAN'=> 1, 'FEB'=> 2, 'MAR'=> 3, 'APR'=> 4, 'MAY'=> 5, 'JUN'=> 6, 'JUL'=> 7, 'AUG'=> 8, 'SEP'=> 9, 'OCT'=>10, 'NOV'=>11, 'DEC'=>12); // Datumstring in Wort zerteilen. $teil = explode(' ', $datum); // Datum für MySQL im ISO8601-Format zusammenbauen. $isodatum = sprintf('%04d-%02d-%02d %s', $teil[4], $monat[strtoupper($teil[1])], $teil[2], $teil[3]); Die Großschreibung der Monatskürzel in $monat zusammen mit dem strtoupper sorgt dafür, daß die Monatskürzel im Datum in beliebiger Groß-/Kleinschreibung sein dürfen. Die Nutzung von %04d bzw. %02d in sprintf sorgt für die richtige Formatierung, selbst wenn z.B. der Tag nur einstellig im Datum angegeben ist. Beides also nicht unbedingt nötig, macht die Sache aber robuster. Es gibt übrigens auch ein nettes kleines Perl-Skript, das Mails aus einer Datei liest und in eine MySQL-Datenbank speichert: <URL: http://www.wipol.uni-bonn.de/MySQL/Downloads/Contrib/mail_to_db.pl.tar.gz > Vielleicht kannst Du das brauchen? Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ > PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7
php::bar PHP Wiki - Listenarchive