3
我設置在軌道上的本地時區,在我的佈局這個JavaScript函數:如何將時間轉換爲用戶的時區中的Rails
<script type="text/javascript" charset="utf-8">
<% unless session[:timezone_offset] %>
$.ajax({
url: '/main/timezone',
type: 'GET',
data: { offset: (new Date()).getTimezoneOffset() }
});
<% end %>
</script>
如果是這種接收功能:
# GET /main/timezone AJAX
#----------------------------------------------------------------------------
def timezone
#
# (new Date()).getTimezoneOffset() in JavaScript returns (UTC - localtime) in
# minutes, while ActiveSupport::TimeZone expects (localtime - UTC) in seconds.
#
if params[:offset]
session[:timezone_offset] = params[:offset].to_i * -60
ActiveSupport::TimeZone[session[:timezone_offset]]
end
render :nothing => true
end
然後,我已經在我的會話偏移,所以我做這樣的事情來顯示時間:
<%= (@product.created_at + session[:timezone_offset]).strftime("%m/%d/%Y %I:%M%p") + " #{ActiveSupport::TimeZone[session[:timezone_offset]]}" %>
是所有這在Rails 3中是非常必要的嗎?我認爲前兩個代碼塊可能是,但第三個代碼塊可能是,但第三個似乎有點過分...
只有這個問題纔會在那個時區保存,所以現在我的數據庫將有時間保存在不同的時區。如果它能夠跟蹤時區,那麼這可能並不糟糕......您怎麼看?這是如何正常完成的?謝謝! – Tony 2010-09-30 04:22:08
它不應該保存時區 - 在正常情況下。例如,Postgres的遷移創建沒有區域信息的時間列。相同的Sqlite。所以應該沒有關於存儲時區的信息。我有一些瘋狂的想法來列出簡單的例子,使用tzones就是其中之一。但不是現在,因爲我必須爲生活做些工作:-) – 2010-09-30 07:51:25
當我再次閱讀時,我有一種感覺,我不夠清楚 - 時間始終以UTC存儲,無論您的Time.zone設置如何。 – 2010-09-30 07:55:19