栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python的timedelta多年

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python的timedelta多年

你需要多

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

最好的办法是使用

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

from dateutil.relativedelta import relativedeltadef yearsago(years, from_date=None):    if from_date is None:        from_date = datetime.now()    return from_date - relativedelta(years=years)

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

from datetime import datetimedef 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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660037.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号