Python中两个日期之间的差异

2024-04-26 02:28:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个不同的日期,我想知道他们的日子有什么不同。日期格式为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,日期差以天为单位。


Tags: 函数timedef格式ddmmret给定日期
3条回答

使用-获取两个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)原样代码将抛出maugurera提到的错误 2) 如果将代码更改为以下内容:

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

这将把datetime对象转换为字符串,但是,有两件事

1)尝试执行d2-d1将失败,因为不能在字符串和 2) 如果您阅读了上面的答案的第一行,您希望对两个datetime对象使用-operator,但是,您只是将它们转换为字符串

我发现你实际上只需要以下几点:

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

相关问题 更多 >