ruby on rails - rails - Comparando fechas en rieles
metodo times ruby (2)
Sí, puede comparar directamente el valor de un created_at
fecha / hora de ActiveRecord created_at
con un objeto regular de DateTime
(como el que puede obtener para analizar la cadena que tiene).
En un proyecto tengo un objeto de valor que tiene un objeto de fecha y hora created_at:
imac:trunk luca$ script/console
Loading development environment (Rails 2.3.2)
>> Value.first.created_at
=> Fri, 12 Jun 2009 08:00:45 CEST 02:00
>> Time.parse("2009-06-03 16:57:45.608000 -04:00")
=> Wed Jun 03 22:57:45 0200 2009
>> Value.first.created_at > Time.parse("2009-06-03 16:57:45.608000 -04:00")
=> true
El campo created_at se define como:
create_table "values", :force => true do |t|
[...]
t.datetime "created_at"
end
Nota: si su campo es una fecha y no una fecha y hora, entonces necesita convertirlo en una hora:
Post.first.created_at.to_time > Time.parse("2009-06-03 16:57:45.608000 -04:00")
o analizar una fecha:
Post.first.created_at > Date.parse("2009-06-03 16:57:45.608000 -04:00")
de lo contrario obtendrá un:
ArgumentError: comparison of Date with Time failed
Supongamos que tengo una Post.first.created_at
datetime estándar. ¿Puedo comparar eso directamente con una fecha y hora en el formato 2009-06-03 16:57:45.608000 -04:00
haciendo algo como:
Post.first.created_at > Time.parse("2009-06-03 16:57:45.608000 -04:00")
Edición: Ambos campos son fechas de fecha , no fechas .
Sí, puedes usar operadores de comparación para comparar fechas, por ejemplo:
irb(main):018:0> yesterday = Date.new(2009,6,13)
=> #<Date: 4909991/2,0,2299161>
irb(main):019:0> Date.today > yesterday
=> true
Pero, ¿estás tratando de comparar una fecha con una fecha y hora?
Si ese es el caso, querrá convertir la fecha y hora en una fecha y luego hacer la comparación.
Espero que esto ayude.