【问题标题】:Rails 4 - how to set a timezone for strftime?Rails 4 - 如何为 strftime 设置时区?
【发布时间】:2016-06-25 21:52:47
【问题描述】:

我们数据库中的每个用户都可以选择他/她自己的时区。我们应用的默认时区Eastern Time

  config.time_zone = 'Eastern Time (US & Canada)'
  config.active_record.default_timezone = 'Eastern Time (US & Canada)'  

当我在应用程序中显示一些日期/时间时,我通常为此使用.strftime。如何为strftime 提供参数以正确显示日期/时间(在特定用户的给定时区)?

或者有没有比使用strftime 格式化每个日期/时间更好的方法?

编辑:

每个用户都有一个time_zone 字符串列,其中存储了时区,如下所示:"Eastern Time (US & Canada)"。 由于每个时区都会重新计算每个日期/时间,性能如何?这不会减慢太多的渲染视图吗?

【问题讨论】:

    标签: ruby-on-rails ruby date time timezone


    【解决方案1】:

    strftime之前设置你的时间对象in_time_zone()

    假设你正在显示created_at,你会这样做:

    object.created_at.in_time_zone(current_user.timezone).strftime("...")

    【讨论】:

    • 还可以扩展Time::DATE_FORMATS 哈希并像Time.now.to_s(:db) 一样使用它。
    猜你喜欢
    • 2014-11-16
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    相关资源
    最近更新 更多