在保存为utc时保留rails中的datetime值(默认)

时间:2016-07-13 09:28:20

标签: ruby-on-rails ruby

我在datetime中有一个签入:rails字段,并使用默认的utc

但问题是当user提交form checkin日期时,他的local timezone信息将会出现。所以rails会自动convert这个来自utc,并且根据与他的时区和utc的差异,可能会有一天关闭。

那么我如何change date utc而不更改values

更新

这是我用来保存到数据库的唯一代码。(如果传入的值不是utc,则utc转换由activerecord完成(我认为))

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

1 个答案:

答案 0 :(得分: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