Si tengo dos fechas (ej. '8/18/2008'
Y '9/26/2008'
), ¿cuál es la mejor manera de obtener el número de días entre estas dos fechas?
507
Si tiene dos objetos de fecha, simplemente puede restarlos, lo que calcula un timedelta
objeto.
from datetime import date
d0 = date(2008, 8, 18)
d1 = date(2008, 9, 26)
delta = d1 - d0
print(delta.days)
La sección relevante de los documentos: https://docs.python.org/library/datetime.html .
Vea esta respuesta para otro ejemplo.
np.datetime64
apython datetime
stackoverflow.com/questions/52982056/…Usando el poder de datetime:
fuente
date
todavía carece de su propio equivalentestrptime()
.strptime
elformat
argumento? Debe quedar claro con la primera fecha arg que tiene un formato.Días hasta Navidad:
Más aritmética aquí .
fuente
Desea el módulo de fecha y hora.
Otro ejemplo:
Como se señaló aquí
fuente
delta = today - last_year
print(delta.days)
fuente
abs()
, que es útil cuando las fechas comparadas son desconocidas de antemano y es la diferencia que le interesa. Si su segunda fechadatetime.strptime(date, date)
es posterior a la primera, el resultado será negativo.abs()
hace que todas las entradas sean absolutas (es decir, positivas).También se puede hacer fácilmente con
arrow
:Para referencia: http://arrow.readthedocs.io/en/latest/
fuente
sin usar Lib solo código puro:
fuente
todos respondieron excelentemente usando la fecha, déjenme intentar responderla usando pandas
Esto le dará la respuesta. En caso de que una de las entradas sea la columna del marco de datos. simplemente use dt.days en lugar de días
fuente
También hay un
datetime.toordinal()
método que aún no se mencionó:https://docs.python.org/3/library/datetime.html#datetime.date.toordinal
Parece muy adecuado para calcular la diferencia de días, aunque no tan legible como
timedelta.days
.fuente
(d1 - d0).days
vuelve0
,d1.toordinal() - d0.toordinal()
vuelve1
. Depende de lo que necesite en su caso de uso real.Para calcular fechas y horas, hay varias opciones, pero escribiré de manera simple:
Espero eso ayude
fuente
Esto supone, por supuesto, que ya ha verificado que sus fechas están en el formato
r'\d+/\d+/\d+'
.fuente
map(int, s.split('/'))
. No es exactamente innovador, pero nuevamente esta pregunta es bastante estúpida. Mi respuesta solo muestra otra forma de desollar al gato.Aquí hay tres formas de solucionar este problema:
fuente