PHP DateTime修改为指定的月份日期


PHP DateTime modify to specifc date in month

我正试图使用php DateTime对象修改功能将日期修改为月中的特定日期,即10日或20日等。

我已经尝试了以下所有方法,但都不起作用:

$d = new DateTime();
$d->modify('10th day');
$d->modify('10th');
$d->modify('10th of this month');
$d->modify('10th of the month');

您想要使用DateTime::setDate

$date = new DateTime();
$date->setDate(2001, 2, 10);

假设您不知道年份和月份(如果您知道,请使用DateTime::setDate()),那么有一种方法可以做到这一点:

$day = 10; // 10th of the month
$dt = new DateTime('first day of this month');
$dt->modify('+' . ($day - 1) . ' days');

我有一种感觉,也有一种方法可以严格通过构造函数来实现,但和你一样,我无法理解魔术串。奇怪的是,"月初一"有效,但"月初十"无效。

编辑:显然,通过构造函数是不可能做到这一点的。就连拉斯姆斯也建议这样做。

试试这个:

$d = new DateTime('first day of this month');
$d->modify('+9 day');

附言:尽管如此,我想使用的更好方法

$cMonth = date('n');
$cYear = date('Y');
...
$d->setDate($cYear, $cMonth, 10);