Дней между двумя датами в Python [дубликат]
этот вопрос уже есть ответ здесь:
каков самый короткий способ узнать, сколько полных дней прошло между двумя датами?
Вот что я сейчас делаю.
math.floor((b - a).total_seconds()/float(86400))
4 ответов:
предполагая, что у вас буквально есть два объекта даты, вы можете вычесть один из другого и запросить полученный
timedeltaобъект количество дней:>>> from datetime import date >>> a = date(2011,11,24) >>> b = date(2011,11,17) >>> a-b datetime.timedelta(7) >>> (a-b).days 7и он работает с датами тоже - я думаю, что он округляется до ближайшего дня:
>>> 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
Вы имеете в виду полные календарные дни или группы по 24 часа?
в течение всего 24 часов, предполагая, что вы используете datetime Python, то timedelta объект уже имеет свойство days:
days = (a - b).daysдля календарных дней вам нужно округлить a до ближайшего дня и b до ближайшего дня, избавившись от частичного дня с обеих сторон:
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
ссылки на мои комментарии на другие ответы. Вот как я бы разработал разницу в днях на основе 24 часов и календарных дней. атрибут days хорошо работает в течение 24 часов, и функция лучше всего подходит для проверки календаря.
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
Comments