2011-09-22 20 views
10

¿Alguien puede explicar cómo d1 es mayor que d2? Son las mismas fechas malditas (o al menos así es como me ven).Probar objetos ActiveSupport :: TimeWithZone para igualdad

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 > 

Con respecto a mis necesidades específicas de aplicación ... Tengo una aplicación para iOS que hace una petición a la aplicación mis rieles pasando un objeto JSON que, entre otros elementos, incluye NSDates en el formato de "2011-09 -22T02: 24: 28-07: 00. " Estoy intentando comparar ese datetime con el "updated_at" que es de tipo ActiveSupport :: TimeWithZone.

Gracias - WG

Respuesta

19

Usted encontrará que el atributo updated_at en su modelo de eventos tiene una precisión superior a segundos.

Intenta dar salida a la parte milisegundos de sus respectivos objetos de tiempo:

puts d1.usec 
puts d2.usec 

Es probable que el primero será> 0, ya que se ajusta automáticamente cuando se persistió el objeto, mientras que el segundo será igual a 0, ya que lo hizo no especifique ningún milisegundo en la cadena desde la que lo analizó.

+0

Sí, eso es todo. ¿Cuál sería la mejor manera de comparar estas fechas para que no se tenga en cuenta en la comparación? – wgpubs

+6

Pruebe 'd1.to_i == d2.to_i'. http://www.ruby-doc.org/core/classes/Time.html#M000339 –

Cuestiones relacionadas