首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python中两个日期之间的差异

Python中两个日期之间的差异
EN

Stack Overflow用户
提问于 2011-12-08 01:17:20
回答 5查看 371.4K关注 0票数 191

我有两个不同的日期,我想知道它们之间的天数差异。日期的格式为YYYY-MM-DD。

我有一个函数可以将给定的数字与日期相加或相减:

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。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-12-08 01:22:50

使用-获取两个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)
票数 376
EN

Stack Overflow用户

发布于 2013-09-14 05:03:55

另一个简短的解决方案:

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()
票数 37
EN

Stack Overflow用户

发布于 2012-10-08 23:23:40

我尝试了上面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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8419564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档