我在我的表中有時間列。並在/config/application.rb
上午有以下聲明。 config.time_zone = 'Mumbai'
。在Rails中,時間列未顯示保存時間的time_zone中的時間?
和IAM節省的時間在數據庫中,用下面的查詢
punch_rec.check_out = Time.now
punch_rec.save
當i型Time.now在終端它顯示以下的時間。
2.2.2 :032 > Time.now
=> 2015-09-28 15:59:06 +0530
當我從數據庫檢索數據,然後它顯示在UTC
time_zone中的時間。正因爲如此,我認爲時間顯示錯誤。
這些是iam執行的步驟。
2.2.2 :038 > p = PunchInOut.find_by_id("28")
PunchInOut Load (0.3ms) SELECT `punch_in_outs`.* FROM `punch_in_outs` WHERE `punch_in_outs`.`id` = 28 LIMIT 1
=> #<PunchInOut id: 28, employee_id: 3, check_in: nil, check_out: nil, date: "2015-09-28", created_at: "2015-09-28 18:37:24", updated_at: "2015-09-28 10:25:22", shift_id: nil, shift_name: nil>
2.2.2 :039 > p.check_in
=> nil
2.2.2 :040 > Time.now
=> 2015-09-29 00:19:17 +0530
2.2.2 :041 > p.check_in= Time.now
=> 2015-09-29 00:19:33 +0530
2.2.2 :042 > p.save
(0.3ms) BEGIN
SQL (0.7ms) UPDATE `punch_in_outs` SET `check_in` = '2015-09-28 18:49:33', `updated_at` = '2015-09-28 18:49:38' WHERE `punch_in_outs`.`id` = 28
(37.7ms) COMMIT
=> true
2.2.2 :043 > p = PunchInOut.find_by_id("28")
PunchInOut Load (0.6ms) SELECT `punch_in_outs`.* FROM `punch_in_outs` WHERE `punch_in_outs`.`id` = 28 LIMIT 1
=> #<PunchInOut id: 28, employee_id: 3, check_in: "2000-01-01 18:49:33", check_out: nil, date: "2015-09-28", created_at: "2015-09-28 18:37:24", updated_at: "2015-09-28 18:49:38", shift_id: nil, shift_name: nil>
2.2.2 :044 > p.check_in
=> 2000-01-01 18:49:33 UTC
2.2.2 :045 >
我該如何解決這個問題。
Rails的默認保存所有倍到數據庫UTC,然後將它們** **顯示在適當的時區,被轉換的飛行。所以,我希望視圖能夠顯示適當的轉換時間。你可以在你的問題中加入以下信息:a)LOCALY你認爲'att.check_out'什麼時候應該設置爲b)什麼存儲在數據庫中,而不是轉換它(查看你的數據庫終端而不是使用Rails )c)當你執行'<%= att.check_out%>時顯示的是什麼' –
@MaxWilliams我更新了我的問題。 – John
@MaxWilliams,如果導軌每次保存UTC時間。那麼這種說法有什麼用處('config.time_zone ='孟買')?它會做什麼? – John