Вы, вероятно, находитесь в часовом поясе Тихого океана, на 8 часов меньше UTC (поэтому в 4:00 они начинают прорываться, поскольку именно тогда наступает полночь UTC).
Не видя ваш код теста / сравнения, все, что я могу сказать, это убедиться, что вы сравниваете даты / время с одним и тем же местоположением (UTC по UTC или местное время по местному времени).
Обновление: Хорошо, похоже, Time.now
возвращает объект Time
, тогда как использование XXX.days.from_now
возвращает объект ActiveSupport::TimeWithZone
, что приводит к различной обработке часовых поясов:
ruby-1.9.2-p136 :009 > (Time.now+5.days).to_s(:db)
=> "2011-02-08 19:40:24"
ruby-1.9.2-p136 :010 > 5.days.from_now.to_s(:db)
=> "2011-02-09 03:40:29"
Я бы порекомендовал вам либо позвонить по номеру .utc
в ваши часы, например:
ruby-1.9.2-p136 :017 > 5.days.from_now.utc.to_s(:db)
=> "2011-02-09 03:42:39"
ruby-1.9.2-p136 :018 > (Time.now+5.days).utc.to_s(:db)
=> "2011-02-09 03:42:39"
или просто переключиться на использование 1.day.from_now
вместо Time.now.tomorrow
для сохранения согласованности типов.