何时在Rails 2.1中使用Time#utc是否合适?

时间:2008-09-19 04:10:25

标签: ruby-on-rails ruby

我正在开发一个需要处理用户时区的日期和时间的Rails应用程序。我们最近将它迁移到Rails 2.1并添加了时区支持,但是在很多情况下我们使用Time#utc然后与那个时间进行比较。与原始Time对象的比较不一样吗?

何时在Rails 2.1中使用Time#utc是否合适?什么时候不合适?

2 个答案:

答案 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转换回显示在每个用户的本地时区。