我的服務器系統時區「歐洲/巴黎」如何強制一個時間UTC當服務器是在另一個時區
我配置我的Rails應用程序(Rails的3.29) config.time_zone =「歐洲/倫敦 config.active_record.default_timezone =:UTC
所有事件的開始/結束日期將存儲在數據庫爲: 「2013年1月2日10:00:00」
問題是作用域
scope :starting, lambda {|start_date_time|
{:conditions => ["starts_at = ?", Event.db_datetime(start_date_time)] }
}
...
def self.db_datetime(date_time)
Time.at(date_time.to_i).utc.to_s(:db)
end
當我創建start_date_time過濾器, 我得到一個系統本地時區zdate日期時間 start_date_time = Time.new(2013,1,2,10,0,0) 2013-01-02 10:00:00 +0100
and Event.db_datetime(start_date_time) gives "2013-01-02 09:00:00"
which cannot be found
有一種方法強制UTC日期時間,以便: START_DATE_TIME = Time.new(2013年,1,2,10,0,0)會給 2013年1月2日10:00:00 UTC
感謝您的意見
謝謝你說的沒錯所以一旦我的日期的存儲,我可以在日期或時間搜索(小時:分鐘)。我強制過濾器(日期時間)到使用UTC : 高清self.db_datetime(DATE_TIME) Time.use_zone Rails.configuration.time_zone做 Time.zone.local(date_time.year,date_time.month,date_time.day,date_time.hour, date_time.min,0).to_s(:db) end end – erwin
Time.zone已經使用了Rails配置中定義的time_zone,所以你不需要重新定義它。您可以直接使用Time.zone.local,也可以使用Time.zone.at(date_time.to_i)。 – AdrienK
我在我的anwser – AdrienK