funkervogt
Goto Top

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 ; ;


 
<?
$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!

Content-Key: 215876

Url: https://administrator.de/contentid/215876

Printed on: April 25, 2024 at 00:04 o'clock

Member: colinardo
colinardo Sep 02, 2013, updated at Sep 03, 2013 at 06:01:57 (UTC)
Goto Top
Hallo FunkerVogt,
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
Member: FunkerVogt
FunkerVogt Sep 03, 2013 at 13:21:46 (UTC)
Goto Top
Alles klärchen... jetzt passt das!
Gleich mit Datenbank getestet! face-smile


if (($handle = fopen("orig2.csv", "r")) !== FALSE) {  
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {  
        $row++;
			$date = $data;
				$curday = explode(".", $date); // getrennt per explode in $currday-Array  
					$curday[2]=substr($curday[2], 0, -2); //Leerzeichen abgetrennt
					$upday = "20".$curday[2]."-".$curday[1]."-".$curday;  
echo " per explode getrennt und neu zusammengesetzt:____" .$upday;  
$myDate = date("Y-m-d", strtotime($upday));   
echo "<br />";  
echo " per strtotime in MySQL-taugliches Format gebracht:  " .$myDate;  
echo "<br /></p>\n";  
$time = $data[1];
$count = $data[2];

echo $time;
echo "<br />";  
echo $count;
echo "<br />";  


Dankeeeee!!


Gruss

Uwe