我正在用simple_form gem创建一条新记录。有两个字段(start_date和end_date)用于日期数据。
有人可以帮助了解保存的日期是否可能在表单中输入后一天?
#<Book:0x0000...
id: 16,
name: "My favorite book",
start_date: Thu, 30 Jun 2016 00:00:00 EEST +03:00,
end_date: Thu, 30 Jun 2016 00:00:00 EEST +03:00,
created_at: Thu, 30 Jun 2016 15:07:57 EEST +03:00,
updated_at: Thu, 30 Jun 2016 15:07:57 EEST +03:00>
与:比较:
INSERT INTO `books` (`name`, `start_date`, `end_date`, `created_at`, `updated_at`) VALUES ('My favorite book', '2016-06-29 21:00:00', '2016-06-29 21:00:00', '2016-06-30 12:07:57', '2016-06-30 12:07:57')
我试图在6月30日保存,但它会存储在6月29日。怎么可能?
答案 0 :(得分:2)
您在EEST中输入日期,并以UTC格式保存日期,因此在保存之前将减去3小时,即前一天的2100。如果您在使用之前将日期转换回EEST,您将获得正确的日期。
为什么这样做取决于您的环境。
答案 1 :(得分:0)
您的问题与rails timezones有关。 你有没有像这样在rails中设置你的时区?
file: config.application.rb
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = :local
如果您这样做,则activerecord会将您的数据保存在当前时区。