php 为 MySQL 插入格式化 1970 年之前的日期
php format date pre 1970 fro MySQL insert
我正在从 CSV 文件导入数据,其中一列包含日期列表。其中一些日期是 1970 年之前的日期。示例日期为 10/03/1956
我在将这些日期格式化为可以插入 MySQL 的格式时遇到问题。
如果我用这个
$date = DateTime::createFromFormat('d/m/Y', $col[8]);
我收到此错误消息
Call to a member function format() on a non-object
但是如果我像这样硬编码日期,它就可以工作
$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 文件中,因此您必须做一些控制
define('DATE_COLUMN', 8);
// @Warning : avoid hard coding file name !
$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];
}
$dateString = NULL;
if (isset($col[DATE_COLUMN]) &&
strlen(trim($col[DATE_COLUMN])) > 0) {
$dateString = trim($col[DATE_COLUMN]);
}
if (is_null($dateString)) {
// print log or throw an exception if you want
}
else {
try {
$date = DateTime::createFromFormat('d/m/Y', dateString);
echo $date->format("Y-m-d");
}
catch (Exception $e) {
echo $e->getMessage();
exit(1);
}
}
}
fclose($handle);
}
我正在从 CSV 文件导入数据,其中一列包含日期列表。其中一些日期是 1970 年之前的日期。示例日期为 10/03/1956
我在将这些日期格式化为可以插入 MySQL 的格式时遇到问题。
如果我用这个
$date = DateTime::createFromFormat('d/m/Y', $col[8]);
我收到此错误消息
Call to a member function format() on a non-object
但是如果我像这样硬编码日期,它就可以工作
$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 文件中,因此您必须做一些控制
define('DATE_COLUMN', 8);
// @Warning : avoid hard coding file name !
$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];
}
$dateString = NULL;
if (isset($col[DATE_COLUMN]) &&
strlen(trim($col[DATE_COLUMN])) > 0) {
$dateString = trim($col[DATE_COLUMN]);
}
if (is_null($dateString)) {
// print log or throw an exception if you want
}
else {
try {
$date = DateTime::createFromFormat('d/m/Y', dateString);
echo $date->format("Y-m-d");
}
catch (Exception $e) {
echo $e->getMessage();
exit(1);
}
}
}
fclose($handle);
}