Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 1936 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Outlook & Mail
Outlook Terminbestätigung wird nicht versendet aber warum?

Frage von ITCrowdSupporter zum Thema Outlook & Mail ...

CPU, RAM, Mainboards
Bluescreen aber warum (26)

Frage von Jocki278 zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...