1
Bir CSV dosyasından veri alıyorum ve bir sütunun bir tarih listesi var. Bu tarihlerden bazıları 1970 öncesidir. Örnek bir tarih 10/03/1956php biçim tarihi 1970 öncesi fio MySQL insert
Bu tarihlerin MySQL'e ekleyebileceğim bir biçimde biçimlendirilmesinde bir sorunum var. i kullanırsanız
bu
$date = DateTime::createFromFormat('d/m/Y', $col[8]);
Ben olmayan bir nesne
değil, bu hata mesaj üyesi işlev biçimi() için
Çağrısı olsun ben sert kod Böyle bir tarih,
buradatam kod
$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); }
biraz kontrolünü yapmak gerekir, böylece CSV dosyası bulunur ve tüm içeriği sağlayacağız garanti edemezsin '$ col [8]' geçerli tarihlerdir (1901’den sonra olması gerektiğine inanıyorum). – apokryfos
Olası kopyası [1970'den önceki tarihler için strtotime kullanma] (http://stackoverflow.com/questions/2871264/using-strtotime-for-dates-before-1970) –
Dizenin doğru tarih biçiminde olduğundan emin misiniz? Örneğin, $ col [8] yazdıysanız ve örneğin $ col [7] ile karşılaştırırsanız. Biçimlendirmeyi dikkate alarak eşit mi? –