我在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
答案 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
。