2014-11-16 2 views
3

Сегодня я столкнулся с этой проблемой, не связанной с чувством, в консоли Rails 3.2. Я под MacOS 10.10, мой часовой пояс +7.Что случилось с датой Rails

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> 

Все хорошо с оригинальным Рубин Дата:

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> 
+0

Не могу воспроизвести –

+0

Прости, что я даже не могу думать о том, что с этим не так. :( – vutran

+0

Несомненно, я могу воспроизвести это в '1.9.3-p550'. Извините, не тестировал других, поскольку эта консоль уже открыта! – vee

ответ

5

Из отчета об ошибке здесь: https://rails.lighthouseapp.com/projects/8994/tickets/6410#ticket-6410-8

Это тонкий один - Date.yesterday использует Date.current, который будет используйте часовой пояс, а Date.today - нет. Если вы установите часовой пояс на тот, где он завтра уже (например, Europe/Berlin, как я печатаю это), то вы можете получить Date.today == Date.yesterday:

Time.zone = «Europe/London» => "Europe/London" Date.today == Date.yesterday => ложный

Time.zone = "Европа/Берлин" => "Европа/Берлин" Date.today == Дата. вчера => true

Смежные вопросы