两个date之间的区别?

我用PYTHON编程…

我有两个不同的date…我想知道他们之间的差异(天)。 date的格式是YYYY-MM-DD

用更好的方式解释我自己

我有一个function,可以添加或取消给定的数字,并得到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 

其中A是date,X是我想要添加的天数…..结果是另一个date….

我需要一个函数,我可以给两个date,结果将是一个int与差异的日子….

我希望有人能帮助! 谢谢

使用-获取两个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) 

另一个简短的解决

 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's day!") main() 

我尝试了上面larsmans发布的代码,但是,有几个问题:

1)这样的代码会抛出mauguerra提到的错误2)如果您将代码更改为以下内容:

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

这将把你的date时间对象转换为string,但有两件事

1)试图做d2 – d1将失败,因为你不能在string上使用减号运算符和2)如果你读了上面的答案的第一行它说,你想在两个date时间对象上使用 – 运算符,但是,你只是将它们转换为string

我发现,你的字面上只需要以下几点:

 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 

尝试这个:

 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()