0

私は3つのイベントがあります。彼らはショーのstart_timeを含んでいます。DB + Rails4ではなく、ユーザーのタイムゾーンに合わせてイベントを取得する

しかし、私が直面している問題は、タイムゾーンです。 dbに保存される値は、Railsのデフォルトの動作としてUTCになります。

仕組み:ユーザーは、時刻選択ツールから日付時間を選択できます。

ユーザごとに2017-04-08 04:00:00 ISTを選択しましたが、データベースに保存されるイベントは2017-04-07 21:30:00 UTCです。

シナリオ:データベースによると8th Aprilためのイベントがないので8th Aprilのためのイベントを取得しようとしているユーザーは、それは何も返しません。

私の場合はタイムゾーンは、のようなものが考えられます。

1) Mumbai      (+05:30) 
2) Pacific Time (US & Canada) (-08:00) 

したがって、これらのケースでは、私は、ユーザーのタイムゾーンに応じた正しいイベントを取得することはありません。

以下のイベントは8th Aprilに対して作成されますが、7th Aprilという名前で保存されるため、ユーザーがカレンダーのイベントに出席するたびに表示されることはありません。

<event id: "1250", title: "lgkg", description: nil, created_by: "12345", account_id: "35", repeat: true, start_time: "2017-04-07 21:30:00", created_at: "2017-04-07 05:17:33", updated_at: "2017-04-07 05:17:33"> 

<event id: "1251", title: "lgkg", description: nil, created_by: "12345", account_id: "35", repeat: true, start_time: "2017-04-07 21:30:00", created_at: "2017-04-07 05:20:43", updated_at: "2017-04-07 05:20:43"> 

<event id: "1252", title: "lgkg", description: nil, created_by: "12345", account_id: "35", repeat: true, start_time: "2017-04-07 21:30:00", created_at: "2017-04-07 05:25:03", updated_at: "2017-04-07 05:25:03"> 

ヘルプ:

ユーザーのタイムゾーンに応じて正しくイベントを取得するためのソリューションを見つけるために助けが必要。

必要な情報:

現在Accountが1列time_zoneを持っています。私たちはそれを使うことができます。

ありがとうございます。

答えて

0

私はあなたが基本的には、第1 UTCに日時を変換する必要があると思う:

Time.zone = current_account.time_zone 
utc_time = Time.parse(picked_time).utc 
events = Event.where("start_time > ?", utc_time) 

はそれが

0

あなたのお役に立てば幸いですおそらく、ユーザーのタイムゾーンを保存し、タイムゾーンを参照してくださいAT使用する必要があります。Section 9.9.3

postgresqlはタイムスタンプとともにタイムスタンプを常にUTCとして保存することに注意してください。

関連する問題