2016-07-13 67 views
0

我有一個登記:datetime字段在rails並使用默認utc保存日期時間值在軌道,同時保存爲utc(默認)

但問題是,當user提交formcheckin日期與他的local timezone信息。因此,軌道會自動convert這對utc和取決於他的時區和utc的差異可能會有一天關閉。

那麼我怎麼能changedateutc沒有改變values

更新

這是我使用保存到數據庫的唯一代碼。(在UTC轉換是通過ActiveRecord的(我認爲)做,如果在價值傳遞的不是UTC)

reservation=current_user.reservations.create(reservation_params) 
    reservation.save 
+0

所以你想**忽略**本地時區信息,並保存原始值?你現在在做什麼? (編輯您的帖子以包含代碼。) –

+0

@TomLord簽入用於房間和房間位於不同的時區。但我認爲它與時區一起工作太令人頭疼,並認爲使用默認的utc會很容易。用戶提交的表單是一個帶有javascript日期對象的角度表單,用於簽入日期。所以它將基於用戶的時區 – Abhilash

+0

首先,您肯定需要使用**的時區**而不是用戶**的時區**。否則,在非UTC時區預訂房間將會產生令人驚訝的結果。我再說一遍,請在您的帖子中包含相關的代碼。 –

回答

0

我找到了一種方法來做到這一點。它不是像我預期的那樣直接轉換,而是起作用。我更改了表單輸入字段以僅發送日期和時間的字符串(不含utc)。

eg: 2016-07-13 00:00:00 

然後在我的控制器保存之前我使用下面的代碼來解析它爲utc。 reservation.check_in = Time.zone.parse(value_from_view)

例如:

reservation.check_in= Time.zone.parse('2016-07-13 00:00:00') 

這將返回Wed, 13 Jul 2016 00:00:00 UTC +00:00如預期。