Ich importiere Daten aus einer CSV-Datei und eine Spalte hat eine Liste von Daten. Einige dieser Daten sind vor 1970. Ein Beispiel Datum wäre 10/03/1956php Format Datum vor 1970 von MySQL einfügen
Ich habe ein Problem bei der Formatierung dieser Daten in ein Format, das ich in MySQL einfügen kann.
, wenn ich diese verwenden
$date = DateTime::createFromFormat('d/m/Y', $col[8]);
Ich erhalte diese Fehlermeldung
Aufruf einer Member-Funktion Format() auf einem Nicht-Objekt
aber wenn ich hart Code ein Datum wie dieses funktioniert es
$date = DateTime::createFromFormat('d/m/Y', '21/03/1966');
hier ist der vollständige Code
$inputFileName = 'data.csv';
if (($handle = fopen($inputFileName, "r")) !== FALSE) {
fgetcsv($handle);
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
for ($i = 0; $i < $num; $i++) {
$col[$i] = $data[$i];
}
try {
$date = DateTime::createFromFormat('d/m/Y', trim($col[8]));
}
catch (Exception $e) {
echo $e->getMessage();
exit(1);
}
echo $date->format("Y-m-d");
}
fclose($handle);
}
Ihre CSV überprüfen und sicherstellen, dass alle Inhalte '$ col [8]' sind gültige Daten (die ich glaube, muss nach 1901 sein). – apokryfos
Mögliches Duplikat von [Verwendung von strtotime für Daten vor 1970] (http://stackoverflow.com/questions/2871264/using-strtotime-for-dates-before-1970) –
Sind Sie sicher, dass die Zeichenfolge im richtigen Datumsformat ist? Wenn Sie zum Beispiel $ col [8] ausgeben und mit $ col [7] vergleichen. Sind sie in Anbetracht der Formatierung gleich? –