Rails的日期出了什么问题

时间:2014-11-16 00:30:33

标签: ruby-on-rails ruby ruby-on-rails-3 date

今天早上我在Rails 3.2控制台遇到了这个无意义的问题。我在MacOS 10.10下,我的时区是+7。

Loading development environment (Rails 3.2.12)
irb(main):001:0> Date.today
=> Sun, 16 Nov 2014
irb(main):002:0> Date.yesterday
=> Fri, 14 Nov 2014
irb(main):003:0>

原始Ruby Date的一切都很好:

irb(main):006:0> Date.today
=> #<Date: 2014-11-16 ((2456978j,0s,0n),+0s,2299161j)>
irb(main):007:0> Date.today.prev_day
=> #<Date: 2014-11-15 ((2456977j,0s,0n),+0s,2299161j)>
irb(main):008:0>

1 个答案:

答案 0 :(得分:5)

来自此处的错误报告:https://rails.lighthouseapp.com/projects/8994/tickets/6410#ticket-6410-8

  

这是一个微妙的 - Date.yesterday使用Date.current,它将使用时区,而Date.today不使用。如果你将你的时区设置为明天的时区(例如我键入的欧洲/柏林),那么你可以获得Date.today == Date.yesterday:

     
    

Time.zone =“欧洲/伦敦”     =&GT; “欧洲/伦敦”     Date.today == Date.yesterday     =&GT;假

         

Time.zone =“欧洲/柏林”     =&GT; “欧洲/柏林”     Date.today == Date.yesterday     =&GT;真