Разница между двумя датами в Python
У меня две разные даты, и я хочу знать разницу между ними. Формат даты - ГГГГ-ММ-ДД.
У меня есть функция, которая может ADD или SUBTRACT заданного числа на дату:
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
где A - дата и x число дней, которые я хочу добавить. И результатом будет другая дата.
Мне нужна функция, где я могу дать две даты, и результатом будет int с разницей даты в днях.
Ответы
Ответ 1
Используйте -
, чтобы получить разницу между двумя объектами datetime
и взять член days
.
from datetime import datetime
def days_between(d1, d2):
d1 = datetime.strptime(d1, "%Y-%m-%d")
d2 = datetime.strptime(d2, "%Y-%m-%d")
return abs((d2 - d1).days)
Ответ 2
Еще одно короткое решение:
from datetime import date
def diff_dates(date1, date2):
return abs(date2-date1).days
def main():
d1 = date(2013,1,1)
d2 = date(2013,9,13)
result1 = diff_dates(d2, d1)
print '{} days between {} and {}'.format(result1, d1, d2)
print ("Happy programmer day!")
main()
Ответ 3
Я пробовал код, отправленный larsmans выше, но есть несколько проблем:
1) Код как есть вызовет ошибку, как упоминалось mauguerra
2) Если вы измените код на следующее:
...
d1 = d1.strftime("%Y-%m-%d")
d2 = d2.strftime("%Y-%m-%d")
return abs((d2 - d1).days)
Это преобразует ваши объекты datetime в строки, но две вещи
1) Попытка выполнить d2 - d1 завершится неудачно, поскольку вы не можете использовать оператор минус для строк и
2) Если вы прочитали первую строку вышеприведенного ответа, которую вы указали, вы хотите использовать оператор - на двух объектах datetime, но вы просто преобразуете их в строки
Я обнаружил, что вам буквально нужно только следующее:
import datetime
end_date = datetime.datetime.utcnow()
start_date = end_date - datetime.timedelta(days=8)
difference_in_days = abs((end_date - start_date).days)
print difference_in_days
Ответ 4
Попробуйте следующее:
data=pd.read_csv('C:\Users\Desktop\Data Exploration.csv')
data.head(5)
first=data['1st Gift']
last=data['Last Gift']
maxi=data['Largest Gift']
l_1=np.mean(first)-3*np.std(first)
u_1=np.mean(first)+3*np.std(first)
m=np.abs(data['1st Gift']-np.mean(data['1st Gift']))>3*np.std(data['1st Gift'])
pd.value_counts(m)
l=first[m]
data.loc[:,'1st Gift'][m==True]=np.mean(data['1st Gift'])+3*np.std(data['1st Gift'])
data['1st Gift'].head()
m=np.abs(data['Last Gift']-np.mean(data['Last Gift']))>3*np.std(data['Last Gift'])
pd.value_counts(m)
l=last[m]
data.loc[:,'Last Gift'][m==True]=np.mean(data['Last Gift'])+3*np.std(data['Last Gift'])
data['Last Gift'].head()
Ответ 5
pd.date_range ('2019-01-01', '2019-02-01'). shape [0]