为了账号安全,请及时绑定邮箱和手机立即绑定

Python中两个日期之间的差异

Python中两个日期之间的差异

泛舟湖上清波郎朗 2019-10-29 10:40:26
我有两个不同的日期,我想知道它们之间的天数差异。日期格式为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天我想补充的数量。结果是另一个日期。我需要一个可以给出两个日期的函数,结果将是一个以天为单位的日期差的整数。
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

使用-得到两者之间的区别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)


查看完整回答
反对 回复 2019-10-29
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

另一个简短的解决方案:


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


查看完整回答
反对 回复 2019-10-29
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

我尝试了上面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


查看完整回答
反对 回复 2019-10-29
  • 3 回答
  • 0 关注
  • 885 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信