2

開始方法がわかりません...なぜActiveSupport::TimeZoneが必要なのかわかりません。TZInfo::Timezoneは問題なく動作し、より完全であるように見えるためです...しかし、ActiveSupportを使用していました何らかの理由で、利用可能なタイムゾーンで EST タイムゾーンを見つけることができませんでした。何か不足していますか?含まれていない理由はありますか?

TZInfo を使用しない理由はありますか? 誰もが TZInfo を使用する必要がありますか?

4

1 に答える 1

3

TimeZone クラスは、TZInfo::Timezone インスタンスのラッパーとして機能します。これにより、Rails は次のことを行うことができます。

  • TZInfo によって提供されるゾーンのセットを、142 ゾーンの意味のあるサブセットに制限します
  • わかりやすい名前でゾーンを取得して表示します (たとえば、「アメリカ/ニューヨーク」ではなく「東部時間 (米国およびカナダ)」)。
  • TZInfo::Timezone インスタンスを必要なときにのみ遅延ロードする
  • TimeZone の local、parse、at、および now メソッドを介して ActiveSupport::TimeWithZone インスタンスを作成します。

ソース: Rails 3 Way - 第 2 版

EST は ActiveSupport::TimeZone で提供されており、「東部時間 (米国およびカナダ)」と名付けられています。TimeZone.all を呼び出すことにより、ActiveSupport::TimeZone によって提供されるすべてのタイム ゾーンを表示できます (ActiveSupport が含まれている場合)。EST は米国のタイム ゾーンにも含まれています。TimeZone.us_zones を呼び出すことで、米国のみのタイム ゾーンの小さなコレクションを返すことができます。TimeZone コレクションにアクセスすると、オフセットが前に付いた TimeZone が提供されます。TimeZone("東部時間 (米国およびカナダ)"] => (GMT-05:00) 東部時間 (米国およびカナダ)。

于 2012-07-25T07:14:14.827 に答える