¿Cómo puedo encontrar el número de días entre dos objetos de fecha?¿Cómo puedo encontrar la cantidad de días entre dos objetos Date en Ruby?
Respuesta
Restar la fecha de inicio de la fecha de finalización:
endDate - beginDate
Prueba esto:
num_days = later_date - earlier_date
irb(main):005:0> a = Date.parse("12/1/2010")
=> #<Date: 4911063/2,0,2299161>
irb(main):007:0> b = Date.parse("12/21/2010")
=> #<Date: 4911103/2,0,2299161>
irb(main):016:0> c = b.mjd - a.mjd
=> 20
Este utiliza un Modified Julian Day Number.
De wikipedia:
La fecha juliana (JD) es el intervalo de tiempo en días y fracciones de días desde el 1 de enero de 4713 aC Greenwich mediodía, Julian calendario proléptico.
todo esto me condujo a un resultado correcto, pero terminaron haciendo
DateTime.now.mjd - DateTime.parse("01-01-1995").mjd
Un tidbit para señalar: DateTime.parse en Ruby espera que la fecha se proporcione como DD/MM/YYYY, o DD-MM-YYYY. Como estadounidense, ¡siempre me despista! – rickumali
@rickumali Como miembro del resto del mundo, agradezco a Ruby por usar "nuestro" formato de fecha predeterminado. –
@rickumali Ruby también acepta la fecha en el formato 'YYYY-MM-DD', que es lo que todos deben usar de todos modos. –
Esto puede haber cambiado en Ruby 2.0
Cuando hago esto consigo una fracción. Por ejemplo en la consola (ya sea IRB o carriles c)
2.0.0-p195 :005 > require 'date'
=> true
2.0.0-p195 :006 > a_date = Date.parse("25/12/2013")
=> #<Date: 2013-12-25 ((2456652j,0s,0n),+0s,2299161j)>
2.0.0-p195 :007 > b_date = Date.parse("10/12/2013")
=> #<Date: 2013-12-10 ((2456637j,0s,0n),+0s,2299161j)>
2.0.0-p195 :008 > a_date-b_date
=> (15/1)
Por supuesto, echando a un int dar el resultado esperado
2.0.0-p195 :009 > (a_date-b_date).to_i
=> 15
Esto también funciona para objetos DateTime, pero hay que tener en consideración los segundos, como este ejemplo
2.0.0-p195 :017 > a_date_time = DateTime.now
=> #<DateTime: 2013-12-31T12:23:03-08:00 ((2456658j,73383s,725757000n),-28800s,2299161j)>
2.0.0-p195 :018 > b_date_time = DateTime.now-20
=> #<DateTime: 2013-12-11T12:23:06-08:00 ((2456638j,73386s,69998000n),-28800s,2299161j)>
2.0.0-p195 :019 > a_date_time - b_date_time
=> (1727997655759/86400000000)
2.0.0-p195 :020 > (a_date_time - b_date_time).to_i
=> 19
2.0.0-p195 :021 > c_date_time = a_date_time-20
=> #<DateTime: 2013-12-11T12:23:03-08:00 ((2456638j,73383s,725757000n),-28800s,2299161j)>
2.0.0-p195 :022 > a_date_time - c_date_time
=> (20/1)
2.0.0-p195 :023 > (a_date_time - c_date_time).to_i
=> 20
en Ruby 2.1.3 cosas han cambiado:
> endDate = Date.new(2014, 1, 2)
=> #<Date: 2014-01-02 ((2456660j,0s,0n),+0s,2299161j)>
> beginDate = Date.new(2014, 1, 1)
=> #<Date: 2014-01-01 ((2456659j,0s,0n),+0s,2299161j)>
> days = endDate - beginDate
=> (1/1)
> days.class
=> Rational
> days.to_i
=> 1
días = (endDate - beginDate)/(60 * 60 * 24)
La fecha es en términos de días, por lo que no es necesario que haga esto. Creo que su solución se vuelve relevante con las diferencias de DateTime. –
¿Qué tal esto?
(beginDate...endDate).count
The Range es un conjunto de seriales únicos. Y ...
es un literal de rango exclusivo.
Así beginDate..(endDate - 1)
es lo mismo. Excepto que no.
En caso cuando BeginDate es igual a endDate, primer elemento será excluido debido a la singularidad y ...
excluirá último. Así que si queremos .count
fechas entre hoy y hoy volverá 0.
Esto funcionó para mí:
(endDate - beginDate).to_i
- 1. ¿Cómo puedo encontrar la diferencia entre dos fechas usando Javascript
- 2. ¿Cómo puedo obtener la cantidad de días entre 2 fechas en Oracle 11g?
- 3. ¿Cómo encontrar el número de días entre dos fechas
- 4. Calcular el número de días hábiles entre dos días
- 5. ¿Encontrar diferencia de días entre dos fechas (excluyendo días de fin de semana) en Python?
- 6. encontrar objetos entre dos fechas MongoDB
- 7. Diferencia de días entre dos fechas
- 8. ¿Cómo puedo calcular el número de días entre dos fechas en Perl?
- 9. ¿Cómo obtengo la cantidad de segundos entre dos DateTimes en Ruby on Rails
- 10. java - ¿Cómo encontrar objetos coincidentes entre dos listas?
- 11. ¿Cómo puedo encontrar el número de años entre dos fechas?
- 12. Contabilizar días de trabajo entre dos fechas
- 13. ¿Cómo puedo encontrar las diferencias entre dos bases de datos?
- 14. Encontrar el intervalo entre dos java.util.date
- 15. ¿Cálculo de cuántos días hay entre dos fechas en DB2?
- 16. ¿Cómo encontrar el número de días entre dos fechas en Java o Groovy?
- 17. Django: ¿cómo puedo encontrar la distancia entre dos ubicaciones?
- 18. Días entre dos fechas en Python
- 19. ¿Cómo puedo encontrar la cantidad de elementos en una matriz?
- 20. Días, horas, minutos, segundos entre dos fechas
- 21. Número de días entre dos instancias de Tiempo
- 22. Número de días entre dos fechas en Joda-Time
- 23. cómo encontrar la distancia entre dos geopoints?
- 24. Número de días entre dos fechas
- 25. ¿Cómo encontrar la diferencia entre dos cadenas?
- 26. Encontrar diferencias de propiedad entre dos objetos C#
- 27. En Ruby on Rails, ¿cómo puedo persistir objetos en la memoria entre sesiones?
- 28. Java, calcular el número de días entre dos fechas
- 29. ¿Cómo contar días entre dos fechas en PHP?
- 30. ¿Diferencia de MySql entre dos marcas de tiempo en días?
que te refieres resta la fecha de inicio de la fecha de finalización :) – Nader
especie de anticlímax eh? – Brig
nota: si está utilizando Wirble en irb (para colorear el resultado), el número racional tendrá un 1 concatenado hasta el final. ¡Ay!es posible que desee usar to_i para convertir el resultado en un número entero – jwal