【问题标题】:Python subtract dates or days from date to get years, months, daysPython 从日期中减去日期或天数得到年、月、日
【发布时间】:2021-01-11 06:58:25
【问题描述】:

我试图从今天的日期中减去两个日期或天数。我想在几年、几个月、几天内得到结果。该怎么做?

期待1 year, 2 months, 5 days20 days3 months, 2 days 等之前,而不是仅仅几天。

import datetime
import pytz
tz='US/Pacific'
birthday = datetime.datetime(2020, 2, 19, 12, 0, 0)

>>> import datetime
>>> import pytz
>>> tz='US/Pacific'
>>> birthday = datetime.datetime(2020, 2, 19, 12, 0, 0)
>>> diff = datetime.datetime.now() - birthday
>>>
>>> diff
datetime.timedelta(days=326, seconds=39130, microseconds=319509)
>>>
>>> birthday = datetime.datetime(2015, 2, 19, 12, 0, 0)
>>> diff = datetime.datetime.now() - birthday
>>> diff
datetime.timedelta(days=2152, seconds=39151, microseconds=823846)
>>>
>>> diff.days
2152

【问题讨论】:

标签: python python-3.x datetime


【解决方案1】:

使用dateutil 包中的dateutil.relativedelta

import datetime
from dateutil.relativedelta import relativedelta

>>> relativedelta(datetime.datetime.now(), datetime.datetime(2020, 2, 19, 12, 0, 0))
relativedelta(months=+10, days=+23, hours=+4, minutes=+8, seconds=+42, microseconds=+204978)

>>> relativedelta(datetime.datetime.now(), datetime.datetime(2015, 2, 19, 12, 0, 0))
relativedelta(years=+5, months=+10, days=+23, hours=+4, minutes=+9, seconds=+10, microseconds=+624971)

您可以提取年份、月份等,例如relativedelta().yearsrelativedelta().months 等。

【讨论】:

    【解决方案2】:

    这个answer 可能会对你有所帮助。但是您也可以使用timetuple() 进行检查

    from datetime import datetime
    import datetime
    import pytz
    tz = 'US/Pacific'
    birthday = datetime.datetime(2020, 2, 19, 12, 0, 0)
    
    
    b = birthday.timetuple()
    n = datetime.datetime.now().timetuple()
    print(f'Year diff: {n.tm_year-b.tm_year}')
    print(f'Month diff: {n.tm_mon-b.tm_mon}')
    print(f'Day diff: {n.tm_mday-b.tm_mday}')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 2014-07-23
      • 2012-10-07
      相关资源
      最近更新 更多