【问题标题】:php , convert to date from excelphp , 从 excel 转换为日期
【发布时间】:2021-04-13 00:10:05
【问题描述】:

我正在导入一个 excel,从源头看来日期是这样的: “2021-04-08T12:36:12+03:00”

我使用了函数

公共函数 transformDate($value) 尝试 { 返回 \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($value); } 捕捉 (\ErrorException $e) { 返回'-1'; }

这个函数发生了异常, 如果我使用 strtotime(2021-04-08T12:36:12+03:00) ,它会返回错误的日期,例如:0616-05-07 00:05:00

我找不到正确的函数

【问题讨论】:

  • 您检查过异常消息的内容了吗?
  • strtotime 得到了正确的结果,请发布您的完整代码:3v4l.org/GAnrt
  • 我的建议是使用DateTime 类。它的构造函数可以解析这个字符串perfectly

标签: php excel


【解决方案1】:

日期字符串“2021-04-08T12:36:12+03:00”包含时区 +03:00。 最好的方法是使用 DateTime 来保持正确的时区。

$dateTime = new DateTime("2021-04-08T12:36:12+03:00");
echo $dateTime->format('Y-m-d H:i:s O');
//2021-04-08 12:36:12 +0300

如果需要不同时区的日期,可以使用 setTimeZone() 来完成。

$dateTime->setTimeZone(new DateTimeZone("Europe/Berlin"));
echo $dateTime->format('Y-m-d H:i:s e');
//2021-04-08 11:36:12 Europe/Berlin

如果我们使用 strtotime 和 Date ,那么我们会根据服务器的设置获得日期和时间(我的时区是“欧洲/柏林”)。

echo date('Y-m-d H:i:s e',strtotime("2021-04-08T12:36:12+03:00"));
//2021-04-08 11:36:12 Europe/Berlin

【讨论】:

    猜你喜欢
    • 2011-10-14
    • 2012-06-22
    • 2014-05-27
    • 2015-09-07
    • 2021-07-14
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多