1
私はCSVファイルからデータをインポートしていますが、1つのカラムには日付のリストがあります。これらの日付の一部は1970年以前です。例の日付は10/03/1956ですphp形式の日付1970年以前の日付からMySQLの挿入
これらの日付をMySQLに挿入できる形式にフォーマットする際に問題があります。
私はこの
$date = DateTime::createFromFormat('d/m/Y', $col[8]);
を使用する場合、私はメンバ関数形式に
コール()非オブジェクト
のが、私のハードコードであれば、このエラーメッセージが表示されますこのような日付は、それが動作します
$date = DateTime::createFromFormat('d/m/Y', '21/03/1966');
ここ
は、完全なコード
$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);
}
をほとんど制御を行う必要がありますので、あなたのCSVファイルに存在し、すべての内容を確認します保証はありません'$ col [8]'は有効な日付です(私は1901年以降でなければならないと信じています)。 – apokryfos
[1970年以前の日付にstrtotimeを使用する]の複製があります(http://stackoverflow.com/questions/2871264/using-strtotime-for-dates-before-1970) –
文字列が正しい日付形式であることは確かですか? $ col [8]を出力して$ col [7]と比較すると、彼らはフォーマットを考慮して等しいのですか? –