ruby-on-rails - 在 View 中显示本地时间

标签 ruby-on-rails

在config/application.rb文件中,我有“config.time_zone ='UTC'”(不带引号)。我假设这是要进行从输入 View 的用户时间到存储在数据库中的UTC的转换。我的问题是,如何将UTC值从数据库转换为用户的本地时间以显示在 View 中?我已经读过Rails会自动处理该问题-如何告诉它执行此操作?

我在数据库的每个用户行中都有一个时区字段,我只是不确定也要在其中存储什么。我知道前刀时间:区域:全部-我只是不知道所有这些在 rails 3中如何组合在一起!

谢谢,

sk

最佳答案

在多区域环境中工作时,将时区设置为UTC是明智的。这在您的application.rb中是完全有效的

Rails将自动将所有时间转换为当前时区,可以使用

Time.zone = "some-zone"

我使用的是ApplicationController中的 before_filter ,在其中我根据当前用户设置了时区。然后,所有操作都在该区域内进行,而您无需在 Controller /模型/ View 中考虑它。

假设您有一些带有日期时间字段的Foo模型。然后在irb控制台中工作:
Time.zone = "Prague"
x = Foo.create(:it_will_happen_at => Time.zone.now)
x.it_will_happen_at # => Sat, 25 Sep 2010 13:45:46 CEST +02:00 

Time.zone = "London"
# it is needed to refresh the field after a time zone has changed.
# In normal situation it'd not be needed, it's just for this console example
x.reload
x.it_will_happen_at # => Sat, 25 Sep 2010 12:44:46 BST +01:00 

当您查看数据库时,您会发现该值为Sat,25 Sep 2010 11:45:46 UTC。

至于区域值,我更喜欢城市的名称,因为它可以与夏令时(夏季/冬季)一起正常工作。

关于ruby-on-rails - 在 View 中显示本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3793324/

相关文章:

ruby-on-rails - docker-compose构建错误-不支持的版本

ruby-on-rails - 我在名为 Cove 的 rails 中创建了一个脚手架。在 Controller 中,实例变量自动命名为@cofe。为什么会这样?

ruby-on-rails - 如何在 Rails 应用程序中启动 pubsub 订阅者

ruby-on-rails - 如何在 Rails 6 中使用自定义 jQuery

ruby-on-rails - 为什么 Rails 不能与 mod_ruby 一起工作?

javascript - AJAX atwho 监听所有 textarea id

ruby-on-rails - Rails 中的 OO 设计 : Where to put stuff

ruby-on-rails - 尝试按名字和姓氏搜索

ruby-on-rails - 带有嵌套资源轨的嵌套表单 4

ruby-on-rails - 获取 will_paginate 在第一页上定义自定义偏移量