什么时候在Rails 2.1中使用Time#utc?
时间:2020-03-06 14:24:41 来源:igfitidea点击:
我正在开发一个Rails应用程序,该应用程序需要处理用户时区中的日期和时间。我们最近将其迁移到Rails 2.1并添加了对时区的支持,但是在许多情况下,我们使用Time#utc然后将其与该时间进行比较。与原始Time对象进行比较不一样吗?
什么时候在Rails 2.1中使用Time#utc?什么时候不合适?
解决方案
如果应用程序有多个时区的用户,则应始终将时间存储在UTC中(任何时区都可以使用,但应遵循最常见的约定)。
让用户输入本地时间,但转换为UTC进行存储(以及比较和操作)。然后,从UTC转换回以显示每个用户的本地时区。
如果已设置:
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来检测区域
希望能有所帮助。