2016-06-30 5 views
1

私はsimple_form gemで新しいレコードを作成しています。日付データの2つのフィールド(start_dateとend_date)があります。間違った日付がsimple_form gemを使って保存されました

誰かが、保存された日付が1日後にフォームに入力された可能性があることを理解できますか?

#<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

あなたはEESTに日付を入力し、UTCで日付を保存していますので、保存する前に3時間、つまり前日の2100日を減算します。使用する前に日付をEESTに戻すと、正しい日付が得られます。

これはなぜあなたの環境によって異なりますか?

+0

ありがとうございます – Zelenka

0

問題はレールタイムゾーンに関連しています。 このようにレールにタイムゾーンを設定しましたか?

file: config.application.rb

config.time_zone = 'Eastern Time (US & Canada)' config.active_record.default_timezone = :local

その場合ActiveRecordのは、あなたの現在のタイムゾーンにデータが保存されます。

関連する問題