什么时候在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来检测区域

希望能有所帮助。