4

以前に入力した日付範囲の複数のタブを持つ ajax カレンダーを作成しようとしています。しかし、例えば:

次の月を取得したいのですが、2 月ではなく 3 月が出力されます

$start= "2013-01-31";
$current =  date('n', strtotime("+1 month",$start)) //prints 3

2014 年 2 月が 28 であり、開始月からベースのように +31 を追加するために発生すると思いますが、なぜですか?

4

1 に答える 1

8

date に 1 か月を追加しようとしています2013-01-31。2013 年 2 月 31 日となるはずですが、日付が存在しないため、次の有効な月 (3 月) に移動します。

次の回避策を使用できます。

$current = date('n', strtotime("first day of next month",strtotime($start)));

DateTimeクラスの使用:

$date = new DateTime('2013-01-31');
$date->modify('first day of next month');
echo $date->format('n');

これは正しく出力されます2

デモ!

于 2013-11-01T13:20:34.810 に答える