使用simple_form gem

时间:2016-06-30 12:16:36

标签: sql ruby-on-rails ruby simple-form

我正在用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日。怎么可能?

2 个答案:

答案 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会将您的数据保存在当前时区。