我遇到从导入值(Excel)到mysql数据库的读取日期值的问题。我的代码如下:
$dataexcel[$i-3]['date_edit'] = date('m/d/Y', strtotime(trim($data['cells'][$i][25])));
我尝试使用strtotime
来定义excel中的值,但是我将问题保存到数据库中,如果我的excel日期格式的值为1/1/2018
(它读作2018年1月1日) ,英文时间格式),在我使用上面的代码后,它保存为1970-01-01
,这意味着1970年1月1日。
在另一个例子中,
我尝试了另一个日期2/1/2018
的输入,它以[{1}}保存到数据库中。
从我上面的示例中,首先出现了与年份不匹配的问题,然后在第二个样本错配问题来自日期,
那么如何申报日期来解决我的问题,如果我想用简单的方法保存日期格式? 如果有任何建议,拜托,谢谢...
答案 0 :(得分:1)
从您的评论回答中,您可以修改以下代码:
$date = str_replace("/", ".", $data['cells'][$i][25]);
$dates = date("Y-m-j", strtotime($date));
$dataexcel[$i-3]['date_edit'] = $dates;
$ date仍未使用strotime
从值中获取,因此日期格式无法正确读取...
答案 1 :(得分:0)
保持简单。在读取文件时使用定义的dateformat(dateformat可以作为参数提供,以防需要调整)。然后,按以下方式读取日期,而不是仅仅使用strtotime(取自php.net'示例):
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
您的代码的相关示例,使用之前的$ date var:
$dataexcel[$i-3]['date_edit'] = $date->format("y-M-Y");
更多信息 - http://php.net/manual/en/datetime.createfromformat.php
答案 2 :(得分:0)
一个简单的函数会做这件事
$date = str_replace("/", ".", $data['cells'][$i][25]);// replace the / with .
$date = date("Y-m-d", strtotime($date));
$dataexcel[$i-3]['date_edit'] = $date;
在数据库中,默认日期格式为YYYY-MM-DD,因此可以正确保存到db