从PHP导入Excel中读取日期值

时间:2018-01-31 09:14:49

标签: php mysql phpexcel

我遇到从导入值(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}}保存到数据库中。

从我上面的示例中,首先出现了与年份不匹配的问题,然后在第二个样本错配问题来自日期,

那么如何申报日期来解决我的问题,如果我想用简单的方法保存日期格式? 如果有任何建议,拜托,谢谢...

3 个答案:

答案 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