times rails metodo hora formato formatear fechas fecha actual ruby-on-rails datetime date-math

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.