0

配列を月の最初の日から開始し、最後に終了するようにしたいと思います。

$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 オブジェクトを変更した後、日付を追加できません。しかし、問題はなぜですか?私はこれを理解したいと思います。

答えてくれてありがとう。

レパス

4

1 に答える 1