我的MySQL以GMT格式存储日期时间戳,尽管服务器的时间在美国东部标准时间。 在添加到MySQL之前,我将我的日期时间转换为本地(服务器的日期时间EST),但它将其存储在GMt而不是EST。这是怎么回事?
item.update_attributes({:request_datetime => Time.parse(date+" "+time+" "+timezone).localtime}) # this becomes EST
puts Time.parse(date+" "+time+" "+timezone).localtime.to_s # prints correct time zone, EST.
mysql> SELECT request_datetime,NOW(),TIMESTAMPDIFF(MINUTE,request_datetime,NOW()) FROM items Where item='2542';
+---------------------+---------------------+----------------------------------------------+
| request_datetime | NOW() | TIMESTAMPDIFF(MINUTE,request_datetime,NOW()) |
+---------------------+---------------------+----------------------------------------------+
| 2012-05-05 22:30:02 | 2012-05-05 18:30:05 | -239 |
+---------------------+---------------------+----------------------------------------------+
1 row in set (0.00 sec)
mysql>
默认情况下,
Rails 将所有时间存储在 UTC/GMT 中,并根据需要将其转换为本地时间,这使得无论您的服务器如何,都可以更轻松地获取正确的时间,或者允许您基于每个用户建立时间。
将以下内容添加到application.rb
作品
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = 'Eastern Time (US & Canada)'