0

我正在尝试使用 php DateTime objects modify 函数将日期修改为当月的特定日期,即 10 日或 20 日等。

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

$d = new DateTime();

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

3 回答 3

2

你想使用DateTime::setDate

$date = new DateTime();
$date->setDate(2001, 2, 10);
于 2012-08-21T22:47:05.570 回答
1

假设您不知道年份和月份(如果知道,请使用DateTime::setDate()),一种方法如下:

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

我有一种感觉,也有一种方法可以严格通过构造函数来完成,但是像你一样,我无法弄清楚魔术字符串。奇怪的是“每月的第一天”有效,但“每月的第十天”无效。

编辑:显然不可能通过构造函数来做到这一点。甚至拉斯穆斯也建议这样做。

于 2012-08-21T22:57:23.847 回答
0

尝试这个:

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

PS:不过,我想一个更好的使用方式

$cMonth = date('n');
$cYear = date('Y');
...
$d->setDate($cYear, $cMonth, 10);
于 2012-08-21T22:56:22.617 回答