2016-08-05 54 views
0

早1天我有一个形式与booking_date,当我填写与2016 3月1日的日期的形式,这些都是发送的参数:日期保存比形式

Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "pturnover"=>{"booking_date(3i)"=>"1", "booking_date(2i)"=>"3", "booking_date(1i)"=>"2016"}, "commit"=>"Opslaan", "id"=>"5"} 

但是,当我看保存为数据库后保存为2016年2月29日:

=> #<Pturnover id: 5, booking_date: "2016-02-29 23:00:00" 

这是怎么可能的,它是否与时区有关?

+0

'这是否与时区或东西''可能yes'? – hgsongra

回答

0

默认情况下,Rails在数据库中保存日期时间为utc时区。从/到字符串的日期时间转换可能会考虑本地时区,无论是OS还是手动设置。本地和utc之间的转换可能是您所看到的差异的原因。

由于Rails中的时区处理是一个相当大的主题,建议在某种程度上处理它。这里有一些相关的资源:

RailsCasts #106 Time Zones (revised)

The Exhaustive Guide to Rails Time Zones

Working with time zones in Ruby on Rails

It's About Time (Zones)

0

您可以转换在输入的时间在保存之前,或者你可以转换的时间在你的节目page.Conversion显示像下面可能看起来时:

ActiveSupport::TimeZone.new("Asia/Tokyo").local(your_inputed_time_here) 

希望有所帮助。