我有一张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 :(得分:0)
您可以在保存之前转换输入的时间,也可以在显示页面中显示转换时间。转换可能如下所示:
ActiveSupport::TimeZone.new("Asia/Tokyo").local(your_inputed_time_here)
希望有所帮助。
答案 1 :(得分:0)
默认情况下,Rails会使用utc
时区将日期时间保存在数据库中。从/到字符串的日期时间转换可以考虑本地时区,可以是操作系统之一,也可以手动设置。本地和utc
之间的转换可能是您看到的差异的原因。
由于Rails中的时区处理是一个相当大的主题,因此建议在某种程度上接近它。以下是一些相关资源:
RailsCasts #106 Time Zones (revised)
The Exhaustive Guide to Rails Time Zones