今回はCakePHPのDateクラスを利用して月の間隔を求めて行きます. (ミュータブルなDateクラスの方はバグの温床になりがちなので,immutableなFrozenDateクラスを使います.)
use Cake\I18n\FrozenDate; function hoge(){ $date_now = new FrozenDate(); $date_3months_later = (new FrozenDate())->addMonth(3); $this->log($date_now); // 2019/09/24 $this->log($date_3months_later); // 2019/12/24 }
ここで,$date_nowと$date_3months_laterが何ヶ月離れているかを求めたいわけですが,diffInMonthsメソッドが有効です.
$this->log($date_now->diffInMonths($date_3months_later)); // 3
これは,デフォルトで引数を渡さない状態では,絶対値を返します. 以下のように呼び出すと,符号がつきます.
$this->log($date_now->diffInMonths($date_3months_later, $abs = false)); // 3 $this->log($date_3months_later->diffInMonths($date_now, $abs = false)); // -3