您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python的timedelta多年

Python的timedelta多年

你需要多timedelta讲多少年过去了; 你还需要知道开始(或结束)的日期。(这是一个闰年的事情。)

最好的办法是使用dateutil.relativedelta 对象,但是这是一个第三方模块。如果你想知道datetime那是n几年一些日期(认为现在),你可以做以下::

from dateutil.relativedelta import relativedelta

def yearsago(years, from_date=None):
    if from_date is None:
        from_date = datetime.Now()
    return from_date - relativedelta(years=years)

如果你想与标准库棒,答案是一个稍微复杂::

from datetime import datetime
def yearsago(years, from_date=None):
    if from_date is None:
        from_date = datetime.Now()
    try:
        return from_date.replace(year=from_date.year - years)
    except ValueError:
        # Must be 2/29!
        assert from_date.month == 2 and from_date.day == 29 # can be removed
        return from_date.replace(month=2, day=28,
                                 year=from_date.year-years)

如果是2/29,和18年前没有2/29,这个函数将返回2/28。如果你宁愿返回3/1,只是改变了过去的return说法阅读::

    return from_date.replace(month=3, day=1,
                             year=from_date.year-years)

您的问题最初是说您想知道自某个日期以来已有多少年了。假设你想要的年一个整数,你猜基于每年365.25天,然后检查使用的无论是yearsago上述定义的功能::

def num_years(begin, end=None):
    if end is None:
        end = datetime.Now()
    num_years = int((end - begin).days / 365.25)
    if begin > yearsago(num_years, end):
        return num_years - 1
    else:
        return num_years
python 2022/1/1 18:38:09 有238人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶