2016-07-13 32 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如预期。