Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP strtotime ändert einen String komischerweise in das aktuelle Datum..aber warum.

Frage Entwicklung PHP

Mitglied: FunkerVogt

FunkerVogt (Level 1) - Jetzt verbinden

02.09.2013 um 19:19 Uhr, 1988 Aufrufe, 2 Kommentare

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


01.
  
02.
<? 
03.
$row = 1; 
04.
if (($handle = fopen("orig2.csv", "r")) !== FALSE) { 
05.
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { 
06.
        $row++; 
07.
		$date = $data[0]; 
08.
                $time = $data[1]; 
09.
                $count = $data[2]; 
10.
echo $date
11.
echo "<br /></p>\n"
12.
$myDate = date("Y-m-d", strtotime($data[0]));  
13.
echo $myDate
14.
echo $time
15.
echo $count
16.
echo "<br /></p>\n"
17.
 
18.
?> 
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!
Mitglied: colinardo
02.09.2013, aktualisiert 03.09.2013
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[0]), 'Y-m-d');

Grüße Uwe
Bitte warten ..
Mitglied: FunkerVogt
03.09.2013 um 15:21 Uhr
Alles klärchen... jetzt passt das!
Gleich mit Datenbank getestet!


01.
if (($handle = fopen("orig2.csv", "r")) !== FALSE) { 
02.
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { 
03.
        $row++; 
04.
			$date = $data[0]; 
05.
				$curday = explode(".", $date); // getrennt per explode in $currday-Array 
06.
					$curday[2]=substr($curday[2], 0, -2); //Leerzeichen abgetrennt 
07.
					$upday = "20".$curday[2]."-".$curday[1]."-".$curday[0]; 
08.
echo " per explode getrennt und neu zusammengesetzt:____" .$upday; 
09.
$myDate = date("Y-m-d", strtotime($upday));  
10.
echo "<br />"; 
11.
echo " per strtotime in MySQL-taugliches Format gebracht:  " .$myDate; 
12.
echo "<br /></p>\n"; 
13.
$time = $data[1]; 
14.
$count = $data[2]; 
15.
 
16.
echo $time; 
17.
echo "<br />"; 
18.
echo $count; 
19.
echo "<br />"; 
20.
 
21.
 
22.
 

Dankeeeee!!


Gruss

Uwe
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Aktuelles Datum in den USA (5)

Frage von Latex78 zum Thema Microsoft Office ...

Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Microsoft Office
gelöst Excel VBA - Jede Zeile ohne aktuelles Datum entfernen (4)

Frage von abuelito zum Thema Microsoft Office ...

Batch & Shell
gelöst String in TXT suchen, überprüfen und wenn noetig aendern ? (4)

Frage von buliwyf zum Thema Batch & Shell ...

Neue Wissensbeiträge
Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(4)

Information von LordGurke zum Thema Humor (lol) ...

Sicherheits-Tools

Trendmicro OSCE und das Fall Creators Update Win10 RS3

(3)

Information von Henere zum Thema Sicherheits-Tools ...

Microsoft Office

Text in Zahlen umwandeln

Tipp von logische zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft Office
ICH BIN AM ENDE MEINES IT-WISSENS ANGELANGT!!!! (38)

Frage von 134537 zum Thema Microsoft Office ...

Windows Server
Gruppenrichtlinie greift nicht zu! (24)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (21)

Frage von sunics zum Thema Hosting & Housing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (16)

Frage von liquidbase zum Thema Voice over IP ...