我们在MYSQL DB上运行了基于Ruby 1.9.2的Rails 3服务器以及time.now和time.zone.now设置的问题。
为了更好地解释,我们现在正在协助其13:00 UTC。
Ubuntu Systemtime设置为15:00 UTC +02:00(这是CEST(中欧夏令时),对我们的时区是正确的。)
Rails时间(time.now)设置为13:00 +0200
现在我们在MYSQL DB中创建一个新条目(通过activerecord),它有一个时间戳。
但是当我们看时间计时它的-2小时偏移到当前服务器时间(在我们的例子中是11:00)
我们尝试将time.zone设置为一个非常不同的测试建议,它对新的mysql条目绝对没有影响。 我们还尝试将mysql全局时间和会话时间设置为UTC,没有效果。
我们现在唯一可以想象的可能是问题是time.now对mysql条目生效并且设置错误。问题在这里:我们无法设置time.now设置。但即使这样可能以某种方式(是吗?),如果能解决这个问题,也不知道。
有没有人有这样的问题或任何想法可能导致它?
答案 0 :(得分:2)
为rails配置两件事。
您已完成的当前时区(在Time.zone.now中使用),它设置您加载的实例化记录中时间戳的时区。
存储到db时这些值转换为的时区。这应该设置为与system / mysql相同的时区。 我认为这个选项是通过以下方式配置的:ActiveRecord :: Base.default_timezone =:utc
由于您的系统时间设置为CEST,因此您也希望使用相同的值。
有两个配置选项的原因是,如果您有多个时区(国际受众)的用户,则可以为每个登录用户设置不同的Time.zone,并且db timezone将正确转换为Time。区域时区。