2012-05-07 24 views
2

我正在構建一個Rails應用程序,用戶可以在其中發佈他們所知道的訪問詳細信息。表單具有一個輸入字段採訪時間,它是日期時間選擇器。我希望爲此應用程序提供通用支持。如何爲我的Rails應用程序提供世界時間支持?

實際的問題:

讓我們說我已經配置在我的生產server.Then的IST時區,如果來自日本的用戶選擇將在IST時間zone.The結果被解析的採訪時間面試時間不正確。

顯示正確的面試時間。

1.Do我需要從用戶的時區?(可能是一個選擇框)

2.Is有任何其他選項來自動檢測時區?

謝謝鄉親:)

如果有什麼不清楚請補充問題評論如下。

回答

3

我有類似的問題。我保留了默認軌配置,以便任何時候都存儲在UTC在數據庫中,我用從ActiveSupport::TimeZone以下方法:

  • ,當我需要從一個窗體保存日期,我以前local_to_utc轉換的日期從本地到UTC:

    ActiveSupport::TimeZone[my_timezone].local_to_utc(date) 
    
  • ,當我需要顯示來自DB的日期,我用

    ActiveSupport::TimeZone[my_timezone].utc_to_local(date) 
    

這樣,保存在數據庫中的所有日期都是UTC,但由用戶在當地時間處理,對於每個用戶可以不同。您可以將時區存儲在User級別(DB中的string字段),和/或使用select helper生成選擇字段。

+0

感謝您的朋友:) –

1

Baldrick的答案是正確的 - 您應該以UTC存儲時間並將每個用戶的時區存儲在用戶的記錄中。

另外,用戶常常想要看到的是當地時間在什麼地方

爲此,當您存儲UTC時間時,還存儲創建該事件的用戶的時區。

所有這些棘手的部分是,MySQL和許多其他數據庫不存儲日期/時間的時區。所以時區信息會丟失,除非您明確地將其存儲在不同的字段中。

因此你需要在數據庫中的兩個字段:

event_time_utc: Datetime, # UTC timezone for when the event happened 
event_timezone: string # the timezone of where the event happened 
+0

謝謝你的朋友:) –

相關問題