php 日期时间,日期不带小时

2022-08-30 22:43:36
new \DateTime();
/*
DateTime Object
(
    [date] => 2016-04-20 04:45:24.000000
    [timezone_type] => 3
    [timezone] => UTC
)
*/  

我如何修剪小时数以获得我的DateTime对象,如下所示:

/*
DateTime Object
(
    [date] => 2016-04-20 00:00:00.000000
    [timezone_type] => 3
    [timezone] => UTC
)
*/

我知道的唯一方法是:

$date = new \DateTime();
$date->format('Y-m-d');
$date = new \DateTime($date->format('Y-m-d'));

但我不喜欢这个解决方案。


答案 1

构造函数的集合参数

$d = new \DateTime("midnight");

UPD:如果对象已经存在,则任何时候

$d->settime(0,0);

结果

DateTime Object
(
    [date] => 2016-04-20 00:00:00.000000
    [timezone_type] => 3
    [timezone] => UTC
)

答案 2

对于那些喜欢以尽可能短的方式做事的人来说,这里有一行代码,用于获取当前日期或将字符串日期解析为DateTime对象,同时将小时,分钟和秒设置为0。

对于今天的日期:

$dateObj = new DateTime ("today");

对于特定日期:

$dateObj = new DateTime ("2019-02-12"); //time part will be 0

对于解析特定日期格式:

$dateObj = DateTime::createFromFormat ('!Y-m-d', '2019-02-12'); //notice the !

推荐