PHP DateTime object


PHP DateTime object

为什么在第一个例子中我得到的是分秒00:00,而在第二个例子中,当没有指定小时时,我得到的却是实际时间
如果在创建对象的日期没有定义该值,我希望始终为0。

echo DateTime::createFromFormat('j.n.Y H', "3.4.2012 22")->format('Y-m-d H:i:s');

输出:2012-04-03 22:00:00

echo DateTime::createFromFormat('j.n.Y', "3.4.2012")->format('Y-m-d H:i:s');

输出:2012-04-03 23:05:45

预计输出:2012-04-03 00:00:00

这将提供您想要的格式:

echo DateTime::createFromFormat('!j.n.Y', "3.4.2012")->format('Y-m-d H:i:s');

Output: 2012-04-03 00:00:00
Excpected output: 2012-04-03 00:00:00

参考编号:http://php.net/manual/en/datetime.createfromformat.php

重置所有字段(年、月、日、小时、分钟、秒、分数和时区信息)发送到Unix Epoch Without!,所有字段都将设置为当前日期和时间。

换句话说,如果没有感叹号!,如果没有指定H(小时)、i(分钟)和s(秒)中的任何一个,则使用运行PHP脚本的当前操作系统时间。

如果给定了元素His中的任何一个,则不使用系统时间。实际上,0将填充所有未指定的时间元素。例如:

echo DateTime::createFromFormat('j.n.Y H', "3.4.2012 22")->format('Y-m-d H:i:s');
//=> 2012-04-03 22:00:00
echo DateTime::createFromFormat('j.n.Y i', "3.4.2012 22")->format('Y-m-d H:i:s');
//=> 2012-04-03 00:22:00
echo DateTime::createFromFormat('j.n.Y s', "3.4.2012 22")->format('Y-m-d H:i:s');
//=> 2012-04-03 00:00:22