使用 DateTime() 获取一个月中的第 N 天
Getting N-th day of month using DateTime()
我需要获取当月 10 号的日期。这种方式行不通:
<?php
$date_start = new DateTime();
$date_start->modify('tenth day of this month');
echo $date_start->format('Y-m-d H:i:s'), "\n";
?>
结果:
Warning: DateTime::modify(): Failed to parse time string (tenth day
of this month ) at position 10 (o): The timezone could not be found in
the database in [...][...] on line 3
当然,我可以使用 date('Y-m-10')
,但我需要 使用 DateTime() 对象 。
您可以使用 setDate
:
$date_start->setDate($date_start->format('Y'), $date_start->format('m'), 10);
echo $date_start->format('Y-m-d H:i:s'), "\n";
输出:
2018-10-10 06:49:01
我找到了正确的方法:
<?php
$date_start = new DateTime();
$date_start->modify('first day of this month');
$date_start->modify('+9 days');
echo $date_start->format('Y-m-d');
?>
2018-09-30 结果:
2018-09-10
我不认为有 tenth day of this month
有 first day of this month
:
如果你想用 DateTime
那样做,你可以尝试像这样双重修改:
$date_start = new DateTime();
$date_start->modify('first day of this month');
$date_start->modify('+9 day');
echo $date_start->format('Y-m-d H:i:s'), "\n";
我需要获取当月 10 号的日期。这种方式行不通:
<?php
$date_start = new DateTime();
$date_start->modify('tenth day of this month');
echo $date_start->format('Y-m-d H:i:s'), "\n";
?>
结果:
Warning: DateTime::modify(): Failed to parse time string (tenth day of this month ) at position 10 (o): The timezone could not be found in the database in [...][...] on line 3
当然,我可以使用 date('Y-m-10')
,但我需要 使用 DateTime() 对象 。
您可以使用 setDate
:
$date_start->setDate($date_start->format('Y'), $date_start->format('m'), 10);
echo $date_start->format('Y-m-d H:i:s'), "\n";
输出:
2018-10-10 06:49:01
我找到了正确的方法:
<?php
$date_start = new DateTime();
$date_start->modify('first day of this month');
$date_start->modify('+9 days');
echo $date_start->format('Y-m-d');
?>
2018-09-30 结果:
2018-09-10
我不认为有 tenth day of this month
有 first day of this month
:
如果你想用 DateTime
那样做,你可以尝试像这样双重修改:
$date_start = new DateTime();
$date_start->modify('first day of this month');
$date_start->modify('+9 day');
echo $date_start->format('Y-m-d H:i:s'), "\n";