2 つの Datetime の違いに問題があります。以下は、DateInterval オブジェクトを表示するコマンド ラインです。
php -r "\$a = new Datetime('first day of 4 months ago midnight'); \$b = new Datetime('first day of 1 month ago midnight'); var_dump(\$a->diff(\$b));"
そして、ここでDateInterval出力:
class DateInterval#3 (15) {
public $y => int(0)
public $m => int(3)
public $d => int(3)
public $h => int(0)
public $i => int(0)
public $s => int(0)
public $weekday => int(0)
public $weekday_behavior => int(0)
public $first_last_day_of => int(0)
public $invert => int(0)
public $days => int(92)
public $special_type => int(0)
public $special_amount => int(0)
public $have_weekday_relative => int(0)
public $have_special_relative => int(0)
}
編集:最初と2番目の日時:
class DateTime#1 (3) {
public $date =>
string(19) "2014-03-01 00:00:00"
public $timezone_type =>
int(3)
public $timezone =>
string(13) "Europe/Zurich"
}
class DateTime#2 (3) {
public $date =>
string(19) "2014-06-01 00:00:00"
public $timezone_type =>
int(3)
public $timezone =>
string(13) "Europe/Zurich"
}
3日間に注意!私は PHP 5.5.8 を使用していますが、この DateInterval が数日前に 0 か月だったことは確かです。PHP 5.4.28 および 5.5.14 で、DateInterval が 0 日を出力します。PHPのバージョンが影響するかどうかはわかりません。
どちらの場合も、days プロパティは 92 です。