我正在开发一个需要处理用户时区的日期和时间的Rails应用程序。我们最近将它迁移到Rails 2.1并添加了时区支持,但是在很多情况下我们使用Time#utc然后与那个时间进行比较。与原始Time对象的比较不一样吗?
何时在Rails 2.1中使用Time#utc是否合适?什么时候不合适?
答案 0 :(得分:7)
如果您已设置:
config.time_zone = 'UTC'
在您的environment.rb中(默认情况下),当ActiveRecord存储时,时间将自动转换为UTC。
然后,如果您将Time.zone(在application.rb上的before_filter中是通常的位置)设置为用户的时区,则所有时间都将从utc存储自动转换为用户的时区。
请小心Time.now。
另见:
http://mad.ly/2008/04/09/rails-21-time-zone-support-an-overview/
http://errtheblog.com/posts/49-a-zoned-defense - 你可以在这里使用JS来检测区域
希望有所帮助。
答案 1 :(得分:0)
如果您的应用程序有多个时区的用户,您应该始终将您的时间存储在UTC中(任何时区都可以,但您应该遵循最常见的约定。)
让用户以本地时间输入,但转换为UTC以存储(并进行比较和操作)。然后,从UTC转换回显示在每个用户的本地时区。