PHP strtotime ändert einen String komischerweise in das aktuelle Datum..aber warum.
Hallo Gemeinde,
wie schon in der "Schlagzeile beschrieben habe ich da ein klitzekleines Problem.
Ich lese eine CSV mit 3 Spalten (Datum, Uhrzeit und einem Wert) ein um diese
dann in eine MySQL Datenbank zu portieren.
Bekanntlich muss dazu das Datumsformat geändert werden, nur "wie beschrieben"
tut es das nicht.
Die Zeilen in der CSV Datei haben das Format:
01.09.13 ;00:30 ; 0,000;C ; ;
Natürlich sind das Zwischenausgaben um das Ergebnis zu vergleichen.
Die Ausgabe ist:
01.09.13
2013-09-0200:30 0,000
aber warum? Ich finde den Fehler nicht!
Vielen Dank im voraus!
wie schon in der "Schlagzeile beschrieben habe ich da ein klitzekleines Problem.
Ich lese eine CSV mit 3 Spalten (Datum, Uhrzeit und einem Wert) ein um diese
dann in eine MySQL Datenbank zu portieren.
Bekanntlich muss dazu das Datumsformat geändert werden, nur "wie beschrieben"
tut es das nicht.
Die Zeilen in der CSV Datei haben das Format:
01.09.13 ;00:30 ; 0,000;C ; ;
<?
$row = 1;
if (($handle = fopen("orig2.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$row++;
$date = $data;
$time = $data[1];
$count = $data[2];
echo $date;
echo "<br /></p>\n";
$myDate = date("Y-m-d", strtotime($data));
echo $myDate;
echo $time;
echo $count;
echo "<br /></p>\n";
?>
Natürlich sind das Zwischenausgaben um das Ergebnis zu vergleichen.
Die Ausgabe ist:
01.09.13
2013-09-0200:30 0,000
aber warum? Ich finde den Fehler nicht!
Vielen Dank im voraus!
Please also mark the comments that contributed to the solution of the article
Content-Key: 215876
Url: https://administrator.de/contentid/215876
Printed on: April 25, 2024 at 00:04 o'clock
2 Comments
Latest comment
Hallo FunkerVogt,
dein Problem liegt in der Funktion
Du musst deinen Datums-String zerlegen und z.B. in diesem Format an die Funktion übergeben
oder du nutzt diese Funktion: http://php.net/manual/en/datetime.createfromformat.php
Grüße Uwe
dein Problem liegt in der Funktion
strtotime()
die nur englisch formatierte Date-Strings akzeptiert. Da dein Datum deutsch formatiert ist, liefert es anstatt eines Fehlers das aktuelle Datum zurück!Du musst deinen Datums-String zerlegen und z.B. in diesem Format an die Funktion übergeben
yyyy/mm/dd
oder du nutzt diese Funktion: http://php.net/manual/en/datetime.createfromformat.php
$mydate = date_format(date_create_from_format('d.m.y',$data), 'Y-m-d');
Grüße Uwe