poner - obtener el dia de la semana en python
Días entre dos fechas en Python (4)
¿Quiere decir días calendario completos o grupos de 24 horas?
Por solo 24 horas, suponiendo que está usando la fecha y hora de Python, el objeto timedelta ya tiene una propiedad de días:
days = (a - b).days
Para días calendario, deberá redondear hacia abajo al día más cercano, yb hasta el día más cercano, eliminando el día parcial de cada lado:
roundedA = a.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
roundedB = b.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
days = (roundedA - roundedB).days
Esta pregunta ya tiene una respuesta aquí:
¿Cuál es la forma más corta de ver cuántos días completos han pasado entre dos fechas? Esto es lo que estoy haciendo ahora.
math.floor((b - a).total_seconds()/float(86400))
Haciendo referencia a mis comentarios sobre otras respuestas. Así es como calcularía la diferencia en días en base a 24 horas y días de calendario. el atributo de días funciona bien durante 24 horas y la función funciona mejor para las verificaciones del calendario.
from datetime import timedelta, datetime
def cal_days_diff(a,b):
A = a.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
B = b.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
return (A - B).days
if __name__ == ''__main__'':
x = datetime(2013, 06, 18, 16, 00)
y = datetime(2013, 06, 19, 2, 00)
print (y - x).days # 0
print cal_days_diff(y, x) # 1
z = datetime(2013, 06, 20, 2, 00)
print (z - x).days # 1
print cal_days_diff(z, x) # 2
Suponiendo que literalmente tiene dos objetos de fecha, puede restar uno de otro y consultar el objeto timedelta
resultante por el número de días:
>>> from datetime import date
>>> a = date(2011,11,24)
>>> b = date(2011,11,17)
>>> a-b
datetime.timedelta(7)
>>> (a-b).days
7
Y funciona también con datetimes, creo que se redondea al día más cercano:
>>> from datetime import datetime
>>> a = datetime(2011,11,24,0,0,0)
>>> b = datetime(2011,11,17,23,59,59)
>>> a-b
datetime.timedelta(6, 1)
>>> (a-b).days
6
Tratar:
(b-a).days
Intenté con b y una de tipo datetime.date
.