Time.at
- Rubyの組み込みメソッド。
- 指定した時刻のTimeオブジェクトを返す。
- キーワード引数inでタイムゾーンを指定できる。
- タイムゾーンの指定がなく引数が数値の場合、生成されたTimeオブジェクトは地方時になる。
# Timeオブジェクト、もしくは起算時からの経過秒数を表す数値を指定する
Time.at(0) #=> 1970-01-01 00:00:00 +0000
# "+HH:MM" や "-HH:MM" のような形式の文字列か,"UTC"などでタイムゾーンを指定する
Time.at(1582721899, in: "UTC") #=> 2020-02-26 12:58:19 UTC
Time.zone.at
- Ruby on Railsのフレームワークにおいてタイムゾーンを取り扱うためのクラス。
- TZInfoというRubyのタイムゾーン情報を扱うためのライブラリを利用していて、
TZInfo::Timezone
インスタンスをラップして、Railsでの使用に適したインターフェースを提供する。 - 実際のタイムゾーンの数は非常に多いが、TimeZoneはそれを134の意味のあるゾーンに制限することで、一般的なタイムゾーンの選択を容易にする。
- そしてより人間が読みやすい形式にタイムゾーンを表現してくれる。
- タイムゾーン情報は、必要になったときだけロードされるので、メモリ使用量の削減や起動時間の短縮に寄与する。
- Railsアプリケーションの
config.time_zone
設定を通じて、デフォルトのタイムゾーンを設定できる。Time.zoneを通じてアクセスが容易になる。
Time.zone # => #<ActiveSupport::TimeZone:0x514834...>
Time.zone.name # => "Eastern Time (US & Canada)"
Time.zone.now # => Wed, 04 Oct 2023 23:04:18.669175338 JST +09:00
Time.zone.at(0) # => Thu, 01 Jan 1970 09:00:00.000000000 JST +09:00
# タイムゾーンを東京に設定
config.time_zone = 'Tokyo'
両者の違い
-
Time.at
はシステムのローカルタイムゾーンに基づくオブジェクトを生成する。 -
Time.zone.at
はRailsのタイムゾーン設定に基づくオブジェクトを生成する。- タイムゾーンの一貫性を保つためには、
Time.zone.at
の使用が推奨される。
- タイムゾーンの一貫性を保つためには、
参考リンク