2016-10-21 8 views
1

私は"starts_at"=>"2016-02-04T14:30:00.000+01:00"Railsの:どのように、元のタイムゾーン(異なるエントリ=異なるタイムゾーン)でモデルから日時を取得する

ではpostgresに保存されているこのエントリを作成したいモデルを考えると、starts_atは、タイムゾーンを維持する必要があります - これは、維持することが重要ですそれはそのままでHTML 今回は14:30に表示されます。 ビジネスの意味:ユーザーはロンドンからの時間を節約できます。オーストラリアからの管理チェック項目と彼は私がきちんとそれがある時に理解できるように、サーバーを必要とするので、私は

「を今すぐ1時間のフォーム内のエントリを選択する」ことができ、同時に ユーザーのタイムゾーン

でユーザーに話す必要があります

Railsは与える:

[28] pry(main)> entry.starts_at 
=> 2016-02-04 13:30:00 UTC 
[17] pry(main)> entry.attributes_before_type_cast["starts_at"] 
=> "2016-02-04 13:30:00+00" 

を私は種類を試したもののはpostgressは、タイムゾーンを捨てることとします

t.change :starts_at, 'timestamp with time zone' 

フィールドを適切なタイムゾーンに格納/取得する方法。ポストバックに格納されます。 それは別のエントリの任意のタイムゾーンすることができ、コードがどの時間帯を持つエントリを知りませんので、(私はあまりにもダミー思われる、別のフィールドにタイムゾーンを格納する場合を除き)私たちははin_time_zoneを使用することはできません

do_not_touch_timezones_for :starts_atまたはstarts_at.original_timezoneやグローバル設定のようなものがありますか?

self.skip_time_zone_conversion_for_attributes = [:starts_at, :ends_at]をしようとしました - いいえ任意の効果

答えて

1

Time#parseに問題はありますか?それはあなたが望む時間を返すようです:

Time.parse("2016-02-04T14:30:00.000+01:00") 
#=> 2016-02-04 14:30:00 +0100 
+2

私はデータベースの文字列として日付を保持する場合、それは解決するだろう。 (これは私が実際にやっている:) ':datetime'カラムの解決策はありますか? –

関連する問題