忍者ブログ
プログラマ、ララ・ベル子さんのゆるふわ奮闘記。

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);


こんな感じです。

日付の扱いはいろんな言語で結構やっかいなこと多いですよね。。
ということで短いですが、今日はこれで終わりです。

拍手[1回]

PR