nanisore oishisou

Webエンジニアあるまさんのゆるふわ奮闘記。

CarbonのdiffIn系のやつでUTCに変換されてうまくdiffできない問題の解決策

Carbon使っていて3月にバグがたくさん出る問題

↑これでも話したんですが、「diffInMonthsなどの差分系メソッドはUTCに変換されてから計算されるため1日だと予想した結果にならない場合がある」んですね。

それでdiffInMonthsの場合に安全な日付10日とかにしてからdiffInするという方法を紹介しました。

ただ、これだと月単位じゃなくて日にち単位でdiffしたいときなどに困ります。

具体的にはdiffInYearsとかの場合です。

そういう場合は、インスタンス作るときに最初からtimezoneをUTCに設定してやればよいです。

$year_month = Carbon::parse($year_month, 'UTC');

$hikaku_shitai_date = Carbon::parse($hikaku_shitai_date, 'UTC');

$diff = $year_month->diffInYears($hikaku_shitai_date);

こんな感じです。

日付の扱いはいろんな言語で結構やっかいなこと多いですよね。。

ということで短いですが、今日はこれで終わりです。