1. ホーム
  2. ruby-on-rails

[解決済み] Rails 3でUTCをローカルタイムに変換する

2023-01-12 13:52:17

質問

UTCの変換に問題があります。 Time または TimeWithZone をRails 3のローカルタイムに変換します。

セイ moment は、ある Time の変数を UTC で使用します (例. moment = Time.now.utc ). どのように変換すれば moment を自分のタイムゾーンに変換するにはどうしたらよいでしょうか。

より正確には、時間が今朝の9 AM EDTに対応する場合は "月曜日3月14日9 AM"、時間が先週の月曜日の9 AM ESTだった場合は "月曜日3月7日9 AM" をプリントアウトしたいのです。

他の方法があるとよいのですが。

Edit : 最初に考えたのは はタイムゾーンとして認識されるはずですが、EDTは実際のタイムゾーンではなく、タイムゾーンの状態のようなものです。たとえば、次のように指定するのは意味がありません。 Time.utc(2011,1,1).in_time_zone("EDT") . EST".と同じで、少し紛らわしいです。 は実際のタイムゾーンで、サマータイムを使用せず、(UTC-5) 年中無休のいくつかの場所で使用されています。

どのように解決するのですか?

Railsには独自の名前があります。それらをご覧ください。

rake time:zones:us

また rake time:zones:all を全てのタイムゾーンに対して実行することもできます。 もっとゾーンに関連した rake タスクを見るには rake -D time

ということで、ESTに変換するために、自動的にDSTにケータリングを行います。

Time.now.in_time_zone("Eastern Time (US & Canada)")