Проверка объектов ActiveSupport::TimeWithZone на равенство

Может кто-нибудь объяснить, как d1 больше, чем d2? Это одни и те же чертовы финики (по крайней мере, мне они так кажутся).

Loading development environment (Rails 3.0.8)
ruby-1.9.2-p180 :001 > d1 = Event.first.updated_at
 => Thu, 22 Sep 2011 02:24:28 PDT -07:00 
ruby-1.9.2-p180 :002 > d2 = Time.zone.parse("2011-09-22T02:24:28-07:00")
 => Thu, 22 Sep 2011 02:24:28 PDT -07:00 
ruby-1.9.2-p180 :003 > d1.class
 => ActiveSupport::TimeWithZone 
ruby-1.9.2-p180 :004 > d2.class
 => ActiveSupport::TimeWithZone 
ruby-1.9.2-p180 :005 > d1 > d2
 => true 
ruby-1.9.2-p180 :006 > 

Что касается потребностей моего конкретного приложения... У меня есть приложение iOS, которое отправляет запрос моему приложению Rails, передавая объект JSON, который, среди прочего, включает NSDates в формате "2011-09-22T02:24:28- 07:00». Я пытаюсь сравнить эту дату и время с «updated_at», который имеет тип ActiveSupport::TimeWithZone.

Спасибо - уг


person wgpubs    schedule 22.09.2011    source источник


Ответы (1)


Вы обнаружите, что атрибут updated_at в вашей модели событий имеет более высокую точность, чем секунды.

Попробуйте вывести миллисекундную часть ваших соответствующих объектов времени:

puts d1.usec
puts d2.usec

Скорее всего, первое будет > 0, поскольку оно было установлено автоматически при сохранении объекта, а второе будет равно 0, поскольку вы не указали миллисекунды в строке, из которой вы ее проанализировали.

person Lars Haugseth    schedule 22.09.2011
comment
Да, это все. Как лучше всего сравнить эти даты, чтобы они не учитывались при сравнении? - person wgpubs; 22.09.2011