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

时间:2016-03-10 20:43:58

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

我们数据库中的每个用户都可以选择他/她自己的时区。我们的应用程序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)"。 由于每个时区都会重新计算每个日期/时间,性能如何?这不会减慢过多的渲染视图吗?

1 个答案:

答案 0 :(得分:3)

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

说您正在显示created_at,您可以:

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