¿Cómo cuento el número de días entre estas dos fechas?
start_date = Date.parse "2012-03-02 14:46:21 +0100"
end_date = Date.parse "2012-04-02 14:46:21 +0200"
Con las clases Date (y DateTime) puede hacer (end_date - start_date).to_i
para obtener el número de días de diferencia.
Time
Sin embargo, los objetos devuelven segundos.Time
objetos, no aDate
objetos. ¿Quizás podría actualizar los nombres en su comentario para reflejar que no son fechas?Asumiendo eso
end_date
ystart_date
ambos son de claseActiveSupport::TimeWithZone
en Rails, puede usar:fuente
(Time.zone.now.to_date - 23.hours.ago.to_date).to_i
, da 1 y debería ser 0Time.zone.now.to_date
devuelve "Mié, 15 de noviembre de 2017", mientras que23.hours.ago.to_date
devuelve "Mar, 14 de noviembre de 2017". La diferencia en el número de días es y debe ser 1 a menos que haya ejecutado su código en la hora anterior a la medianoche.Rails tiene algunos ayudantes integrados que pueden resolver esto por usted. Una cosa a tener en cuenta es que esto es parte de los Actionview Helpers, por lo que no estarán disponibles directamente desde la consola.
Prueba esto
fuente
Seguí obteniendo resultados en segundos, así que esto funcionó para mí:
fuente
1.day
no esruby
como OP solicitado (en las etiquetas). EsRails
, o más específicoactive support
, aunquecreated_at
es básicamente unModel
método en elRails
modo ..para obtener el número de días en un rango de tiempo (solo un recuento de todos los días)
para obtener el número de días entre 2 fechas
fuente
Ninguna de las respuestas anteriores (a esta fecha) da la diferencia correcta en días entre dos fechas.
El que más se acerca es aquel quequent . Una respuesta completa convertiría
to_i
y luego dividiría:En el ejemplo específico de la pregunta, no se debe analizar
Date
si el tiempo transcurrido es relevante. Usar en suTime.parse
lugar.fuente
Para tener el número de días completos entre dos fechas (
DateTime
objetos):fuente
Para obtener el número de días de diferencia por dos fechas:
fuente
fuente