我想制作一个数组,从每月的第一天开始,到最后一天结束。
$days = array();
$sdays = cal_days_in_month(CAL_GREGORIAN, date('m'), date('Y'));
$d = new DateTime();
$d->modify('first day of this month');
for($i; $i<$sdays; $i++)
{
$days[(int)$d->format('W')][(int)$d->format('N')] = $d->format('Y-m-d');
$d->add(new DateInterval('P1D'));
}
print_r($days);
exit();
所以这很简单。但结果看起来 DateInterval 函数不能正常工作。
期待:
Array
(
[14] => Array // week
(
[1] => 2013-04-01
[2] => 2013-04-02
[3] => 2013-04-03
...
现实:
Array
(
[14] => Array
(
[1] => 2013-04-01
)
)
是的,方法,你怎么解决这个问题也很简单,创建另一个DateTime对象,修改为第一天,然后从第一天创建一个新的DateTime对象,然后你可以将DateInterval添加到它。
因此,在我通过 $d->modify 修改了我的 DateTime 对象之后,无法添加任何日期。但问题是为什么?我想明白这一点。
感谢你的回答。
重复