我想比較表中的日期/時間與當前時間,看看該項目是否已過期。我嘗試了很多組合,但似乎無法正確調整時區。我在東部標準時間。無法在導軌中正確使用日期/時間比較。時區問題。
create_table "admin_messages", force: :cascade do |t|
t.text "message"
t.datetime "expires"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
其基本思想是我可以添加消息和過期日期並顯示尚未過期的消息。
application.rb
config.active_record.default_timezone = 'Eastern Time (US & Canada)'
config.time_zone = 'Eastern Time (US & Canada)'
end
我試過了很多方法讓下面的if語句正常工作無濟於事。
helper_method :show_admin_messages
def show_admin_messages
$admin_message = ''
@admin_messages = AdminMessage.all
@admin_messages.each do |message|
if message.expires >= Time.now.in_time_zone("Eastern Time (US & Canada)")
$admin_message = $admin_message + message.message + "<br>"
end
end
end
如果我嘗試Time.now一對夫婦的變化,我得到:
Time.now 2016-01-19 09:23:08 -0500
Time.now.utc 2016-01-19 14:23:08 UTC
Time.now.localtime 2016-01-19 09:23:08 -0500
Time.now.in_time_zone("Eastern Time (US & Canada)") 2016-01-19 09:23:08 -0500
我的問題是試圖找出的if語句的語法。
完美的作品。 –
說得太快。我多了一些工作,看起來應用程序認爲日期存儲在UTC。 –