以前に入力した日付範囲の複数のタブを持つ ajax カレンダーを作成しようとしています。しかし、例えば:
次の月を取得したいのですが、2 月ではなく 3 月が出力されます
$start= "2013-01-31";
$current = date('n', strtotime("+1 month",$start)) //prints 3
2014 年 2 月が 28 であり、開始月からベースのように +31 を追加するために発生すると思いますが、なぜですか?
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
。