たとえば、ベルリンのタイム ゾーンで午前 3 時の Time オブジェクトを取得する必要があるとします。私はこれを理解することができません。
私が行った場合、
Time.parse("03:00am").in_time_zone('Berlin')
現在のタイムゾーンの午前 3 時をベルリンのタイムゾーンに変換します。しかし、ベルリンのタイムゾーンで午前 3 時が必要です。
たとえば、ベルリンのタイム ゾーンで午前 3 時の Time オブジェクトを取得する必要があるとします。私はこれを理解することができません。
私が行った場合、
Time.parse("03:00am").in_time_zone('Berlin')
現在のタイムゾーンの午前 3 時をベルリンのタイムゾーンに変換します。しかし、ベルリンのタイムゾーンで午前 3 時が必要です。
Time.use_zone を使用してタイムゾーンを一時的に設定してみてください
> Time.use_zone("Berlin") do
> t = Time.zone.parse("3:00am")
> end
=> Thu, 09 Aug 2012 03:00:00 CEST +02:00
私は同じ問題を抱えていて、Time.zone は複数のリクエスト間で持続するため、変更したくありませんでした。
トリック (および Time.zone のようなシステム設定を変更しないため、より安全なアプローチ) は、時間 (AND ゾーン) を Time.parse で使用できる形式にすることです。以下は、米国太平洋時間の例です。代わりに、希望する TZ 形式のタイムゾーン文字列を挿入してください。
Time.parse("2012-10-1 8:00:00 太平洋時間 (米国およびカナダ)")
これを試して、
Time.zone = "Berlin"
Time.zone.parse("03:00am")