Rails 4 - 如何为 strftime 设置时区?

use*_*621 4 ruby time timezone ruby-on-rails date

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

  config.time_zone = 'Eastern Time (US & Canada)'
  config.active_record.default_timezone = 'Eastern Time (US & Canada)'  
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:

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

Mik*_*rin 5

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

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

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