我们数据库中的每个用户都可以选择自己的时区。我们应用程序的默认时区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)"
。由于每个时区都会重新计算每个日期/时间,因此性能如何?这不会减慢太多的渲染视图吗?
在strftime
之前设置时间对象in_time_zone()
。
假设您正在显示created_at
,您会执行以下操作:
object.created_at.in_time_zone(current_user.timezone).strftime("...")