php date& strtotime函数导致1970-00-00 00:00值

时间:2017-03-22 13:51:38

标签: php

当我从我的数据库中回显日期时间值时,我现在正在尝试显示此值以在我的表单中的datetime-local字段中对其进行编辑。 db中的datetime vaue设置为: 22/3/2017 10:00:00

然而,在尝试使用以下代码后,我留下了这个: 1970-01-01T01:00:00

 $dat = date("Y-m-d\TH:i:s", strtotime($_GET["dat"]));

&为什么此功能无法正常显示' 22/3/2017 10:00'在表单字段?

2 个答案:

答案 0 :(得分:2)

使用DateTime::createFromFormat

$date =  DateTime::createFromFormat('d/m/Y H:i:s', '22/3/2017 10:00:00');
$dat = $date->format('Y-m-d\TH:i:s');
echo $dat;

您的代码无效,因为strtotime根据分隔符对实际格式进行了假设:

  • m/d/Y - 美国格式
  • d.m.Yd-m-Y - 欧洲

答案 1 :(得分:0)

它无效,因为strtotime()只能翻译特定的日期格式。

检查manual。有关支持的日期格式列表,请查看here

您的日期格式似乎未包含在受支持的日期格式中。

示例:

strtotime("03/22/2017 10:00:00"); // Works: returns 1490173200
strtotime("22/3/2017 10:00"); // Doesn't work: returns false

您必须更改数据库中的日期格式或将其格式化为支持的格式之一才能使其正常工作。