【问题标题】:Weird Behaviors of time in Rails applicationRails 应用程序中奇怪的时间行为
【发布时间】:2013-05-31 20:30:30
【问题描述】:

当我发布消息时,时间显示正确(所需的时区)。一旦我刷新浏览器,时间就会被扭曲。 我检查了控制台和数据库表,我更加困惑。 我都检查了本地环境和 Heroku 环境。

当前设置:

在 Heroku 控制台上,

heroku config:add TZ="Asia/Seoul"

在 application.rb 中

config.time_zone = 'Seoul'

config.active_record.default_timezone = 'Seoul'

有什么需要解决的吗?

更新 我删除了application.rb中的时区设置,现在 现在时间 = +0900 Time.zone.now = +00:00

根据post这个@,无论在配置文件中如何设置时区,rails DB会一直使用UTC时区吗?

【问题讨论】:

  • 在 Rails 中,日期时间以 UTC 格式保存到数据库。在您的记录中,时间被错误地保存为本地时间。因此,显示时添加了 9hours,尽管它实际上是本地时间。尝试删除“config.active_record.default_timezone = 'Seoul'”。
  • DB 的时区好像不同步,只是简单地删除 application.rb 中的时区配置并没有解决问题。
  • 您是否根据应用程序中任何位置的用户设置来设置 time_zones?时区有时真是让人头疼;)
  • 没有。是的,看起来是这样:(
  • 是的,数据库将始终保存为 UTC,一种标准格式。这很好,应该发生的是,rails 会根据您设置的 config.time_zone 将该标准 UTC 时间转换为用户友好的显示值...您使用什么来显示应用程序中的 created_at ?

标签: ruby-on-rails timezone


【解决方案1】:

这解决了问题。

heroku config:add TZ="Asia/Seoul"

application.rb

config.time_zone = 'Seoul'

config.active_record.default_timezone = :local

那么,Time.zone.now == Time.now

我稍后会更新详细信息。

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 2023-03-03
    • 2016-11-02
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多