PHP 日期时间对象

标签 php

为什么在第一个例子中我得到的是分和秒 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

! Resets all fields (year, month, day, hour, minute, second, fraction and timzone information) to the Unix Epoch Without !, all fields will be set to the current date and time.

换句话说,没有感叹号!,如果不指定H(小时)、i(分钟)、s(秒)中的任何一个,则当前OS系统运行时间使用 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

关于PHP 日期时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20338971/

相关文章:

php - 如何在 Laravel 中按多对多关系进行分组

php - 具有循环引用的对象上的 in_array

php - 如何递归删除数组中的空条目?

php - smarty如何替换现有的字符(php添加)来判断显示图像或显示其他列

php - 获取消息 ID 作为响应 - SendGrid API v3

PHP - mySQL 数据库一直忽略我查询的第一部分

php - 在接下来的第 4 列中查找 CI 数据库错误

php - 仅将一个表从一个数据库导入/导出到另一个数据库 [通过 PHP]

php - 在 Dropbox API 中获取带有元数据的下载链接

php - mpdf addPage 创建空白页