Difference between two dates in Python

I have two different dates, and I want to know the difference between the two. The date format is YYYY-MM-DD.

I have a function that can ADD or SUBTRACT a given number on a date:

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 

where A is the date and x is the number of days I want to add. And the result will be a different date.

I need a function where I can give two dates, and the result will be int with the date difference in days.

+93
python date
Dec 07 '11 at 17:17
source share
5 answers

Use - to get the difference between two datetime objects and take the days member.

 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) 
+196
Dec 07 '11 at 17:22
source share

Another short solution:

 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() 
+18
Sep 13 '13 at 21:03
source share

I tried the code posted by larsmans above, but there are a few problems:

1) The code as it will cause an error, as mentioned by mauguerra 2) If you change the code to the following:

 ... d1 = d1.strftime("%Y-%m-%d") d2 = d2.strftime("%Y-%m-%d") return abs((d2 - d1).days) 

This converts your datetime objects to strings, but two things

1) An attempt to execute d2 - d1 will fail, because you cannot use the minus operator for strings, and 2) If you read the first line of the above answer that you specified, you want to use the operator on two datetime objects, but you just convert them to strings

I found that you literally only need the following:

 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 
+2
Oct 08
source share

Try the following:

 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() 
0
Jul 24 '17 at 18:07
source share

pd.date_range ('2019-01-01', '2019-02-01'). shape [0]

0
Jun 05 '19 at 20:54 on
source share



All Articles