Tengo dos fechas diferentes y quiero saber la diferencia en días entre ellas. El formato de la fecha es AAAA-MM-DD.
Tengo una función que puede AGREGAR o RESTAR un número dado a una fecha:
def addonDays(a, x):
ret = time.strftime("%Y-%m-%d",time.localtime(time.mktime(time.strptime(a,"%Y-%m-%d"))+x*3600*24+3600))
return ret
donde A es la fecha yx la cantidad de días que quiero agregar. Y el resultado es otra fecha.
Necesito una función donde pueda dar dos fechas y el resultado sería un int con diferencia de fecha en días.
Respuestas:
Use
-
para obtener la diferencia entre dosdatetime
objetos y tomar eldays
miembro.fuente
(d2 - d1)
será untimedelta
objeto.total_seconds
también? Creo que es importante, ya que es lo que esperaba obtener cuando lo intentéseconds
sin leer los documentos.Otra solución corta:
fuente
if
en ladiff_dates
función? Por la definición del valor absoluto,abs(date1-date2)
siempre será igual aabs(date2-date1)
.Probé el código publicado por larsmans arriba, pero hay un par de problemas:
1) El código como está arrojará el error mencionado por mauguerra 2) Si cambia el código a lo siguiente:
Esto convertirá tus objetos de fecha y hora en cadenas pero, dos cosas
1) Intentar hacer d2 - d1 fallará ya que no puede usar el operador menos en las cadenas y 2) Si lee la primera línea de la respuesta anterior que se indica, desea usar el operador - en dos objetos de fecha y hora pero, simplemente los convirtió en cadenas
Lo que encontré es que, literalmente, solo necesitas lo siguiente:
fuente
datetime.strptime
para convertir cadenas endatetime
objetos. Como el OP declaró que "El formato de la fecha es AAAA-MM-DD", supuse que las fechas se representaban como cadenas. Si no lo están, obviamente no hay necesidad de una conversión.Prueba esto:
fuente
pd.date_range ('2019-01-01', '2019-02-01'). shape [0]
fuente