2024年6月21日金曜日

PHP 月数の取得とタイムゾーン

PHP Get month number and timezone

少しはまりました。

php で任意の指定期間の月数を求める、です。ざっくりこんな感じです。

$d1 = new DateTime('2021-07-01');
$d2 = new DateTime('2022-05-31');
$interval = $d2->diff($d1);
return $interval->m;

期待値は 10 ですが 11 となります。

ちなみにExcelで以下のようにすると 10 となります。

DATEDIF("2021-07-01","2022-05-31","m") 

ググってみるとありました。タイムゾーンのようです。

$timezone = new DateTimeZone('UTC');

を追加して、

$d1 = new DateTime('2021-07-01', $timezone);

としますと期待値 10 が取得できました。
今回は月数のみなのでタイムゾーン指定でOKとします。
ケースによっては考慮しなくちゃいけないことがあるようです。



(参考)https://qiita.com/Hiraku/items/b008982c5819e296e3fd