从 PHP 中的导入 Excel 中读取日期值

Read date value from import Excel in PHP

我在从导入值 (Excel) 到 mysql 数据库中读取日期值时遇到问题。我的代码如下:

$dataexcel[$i-3]['date_edit'] = date('m/d/Y', strtotime(trim($data['cells'][$i][25])));

我尝试使用 strtotime 来定义 excel 的值,但是我无法将其保存到数据库中,如果我在 excel 中的值具有 excel 日期格式为1/1/2018(读作2018年1月1日,英文时间格式),在我使用上面的代码后,它保存为1970-01-01,表示1970年1月1日。

在另一个例子中, 我尝试了另一个日期 2/1/2018 的输入,它作为 2018-02-02.

保存到数据库中

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

如果我想以简单的方式保存日期格式,如何声明日期来解决我的问题? 如果有什么建议,谢谢...

保持简单。读取文件时使用定义的日期格式(日期格式可以作为参数提供,以防需要调整)。然后,以下列方式读取日期,而不仅仅是使用 strtotime(取自 php.net 的示例):

$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');

您的代码的相关示例,使用之前的 $date 变量:

$dataexcel[$i-3]['date_edit'] = $date->format("y-M-Y");

更多信息 - http://php.net/manual/en/datetime.createfromformat.php

一个简单的函数就可以完成这件事

    $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 ,所以它正确地保存到数据库中

根据您的评论回答,您可以修改如下代码:

$date = str_replace("/", ".", $data['cells'][$i][25]);
$dates = date("Y-m-j", strtotime($date));
$dataexcel[$i-3]['date_edit']  = $dates;

$date 仍然从未使用的值中获取 strotime,因此日期格式读取不正确...