Rails时区问题

3

这是我的控制台:

irb(main):048:0> Time.now
=> 2011-04-13 00:51:50 +0200
<c => (@stats[5] == '-' ? 0 : @stats[3]), :earn => @stats[6])
=> #<Reklamer id: 75, virksomhed: "Orville", dato: "2011-04-13 00:00:00", unik_k
lik: 0, klik: 0, unik_vis: 0, vis: 0, leads: 0, ordre: 0, earn: 0, created_at: "
2011-04-12 22:52:13", updated_at: "2011-04-12 22:52:13", cpc: 0>
irb(main):050:0>

可以看到,当我创建一个新的项目时,更新时间(updated_at)和创建时间(created_at)为"2011-04-12 22:52:13",而不是正确的时间:2011-04-13 00:51:50

1个回答

10
irb(main):048:0> Time.now
=> 2011-04-13 00:51:50 +0200
created_at: 2011-04-12 22:52:13 # +0000

Rails默认使用+0000时区存储时间,而你当前的时区是+0200。

http://railscasts.com/episodes/106-time-zones-in-rails-2-1

相关主题:

更新:

为了更好地理解,在设置config.time_zone = 'Copenhagen'时,它意味着什么?

  • 时间仍将以UTC +0000存储
  • 如果调用 @object.created_at(或任何其他日期字段),它将偏移您的时间并返回本地时间。

例如(config.time_zone ='Moscow' # +0400

object = Object.new
object.save
#=> #<Object id: 1, created_at: "2011-04-13 07:46:36", updated_at: "2011-04-13 07:46:36">
object.created_at
#=> Wed, 13 Apr 2011 11:46:36 MSD +04:00

为什么它在+0000 UTC中存储时间?因为用户可以选择任何本地时区,因此它将自动偏移至用户的时区。


我尝试将config.time_zone = 'UTC +02:00'添加到我的enviroment.rb文件中,但它没有起作用。 - Rails beginner
我已将时区设置为 config.time_zone = "哥本哈根",但仍然得到错误的时间。 - Rails beginner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接