コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Date.todayはサーバーのタイムゾーン、Date.currentはRailsのタイムゾーンを意識して変換する

明確にズバーン!というのがなかったので書く

該当コード

https://github.com/rails/rails/blob/6504d51a78a86a0994aa0f461e769e68d217361f/activesupport/lib/active_support/core_ext/date/calculations.rb#L48

Date.todayとは

class Date (Ruby 2.6.0) - today

RubyのDateクラスにあるメソッドで、当日を返すもの…だがこのTimeZoneは実行している環境(サーバー)に依存する

Date.currentとは

ActiveSupportで拡張された、Dateの拡張で、きっちりと違いが書いてある。

Active Supportでは、Date.currentを定義して現在のタイムゾーンにおける「今日」を定めています。このメソッドはDate.todayと似ていますが、ユーザー定義のタイムゾーンがある場合にそれを考慮する点が異なります - Active Support コア拡張機能 - Rails ガイド

参考関連リンク