使用Time.to_s(:db)时如何保留时区?

时间:2013-06-26 21:13:51

标签: ruby-on-rails ruby

我正在尝试使用PST时区转换Time对象。

zone = ActiveSupport::TimeZone.new("Pacific Time (US & Canada)")
now = Time.now.in_time_zone(zone)

当我输出现在时,它是正确的。当我 Time.now.in_time_zone(zone).to_s(:db)时,它会输出GMT(原始日期)。

我该如何解决?

更新:看起来像以下代码

zone = ActiveSupport::TimeZone.new("Pacific Time (US & Canada)")
now = Time.now.in_time_zone(zone).strftime("%Y-%m-%d %H:%M:%S")

1 个答案:

答案 0 :(得分:1)

数据库日期通常以utc时间格式存储..

ActiveSupport在to_s(:db)上返回UTC,而不是GMT, 见http://apidock.com/rails/ActiveSupport/TimeWithZone/to_s

编辑:也许这对你有帮助吗? http://chris.finne.us/2011/09/23/rails-3-tosdb-when-database-time-is-not-utc/