【问题标题】:Python Programming: add years to current timePython 编程:将年份添加到当前时间
【发布时间】:2018-02-08 04:18:49
【问题描述】:

如何显示距当前时间 5 年零 5 天后 示例:

Year : 2017 
newYear: 2022

怎么做? 我当前的时间格式如下所示:

import datetime
X=datetime.datetime.now()
print ("year:%s" %x.year)

【问题讨论】:

  • 你可以将this answer改成使用timedelta(years=5, days=5) ...
  • @JonClements class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) 来自文档 docs.python.org/3/library/datetime.html#datetime.timedelta。似乎没有几年的争论。我认为你错了。
  • @s_vishnu 哎呀 - 将它与 dateutil 的 relativedelta 混淆......
  • 你说的是日子,但你所显示的只是岁月......所以datetime.now().year + 5......?!

标签: python


【解决方案1】:

抱歉,我的回复晚了,这几天我非常忙。 我的代码将首先将 5 年添加到当前年份,然后添加 5 天,如果超过允许的最大值,请确保更改它。 (8 月为 31)但您也可以将其扩展到其他月份。这只是概念。

    import datetime
X=datetime.datetime.now()
print ("year:%s" %X.year)
newY = X.year + 5
print("new year: %s" %newY)
newD = X.day + 5
if X.month == 1 or X.month == 3  or X.month == 5 or X.month == 7 or X.month == 8 or X.month == 10 or X.month == 11 or X.month == 12:
    # Test if the Month has 31 days
    if X.day + 5 > 31:
        op1 = X.day + 5
        op2 = op1 - 31
        new = X.month + 1
        print("month: {}".format(new))

newXD = None

【讨论】:

    【解决方案2】:

    这也许是:

    from calendar import isleap
    from datetime import datetime, timedelta
    X=datetime.now()
    
    day_count = sum(365 + isleap(yr) for yr in range(X.year + 1, X.year + 6)) + 5
    
    Y = X + timedelta(days=day_count)
    

    注意:timedelta 不直接接受years,你必须使用days。这不是最好的方法,但可以这样做。

    【讨论】:

    • 没听说过闰年?
    • 您可能还想检查您的逻辑...这给了您 2022-07-22...
    • 如果你打算这样做 - 让它变得不那么复杂(和正确)并使用day_count = sum(365 + isleap(yr) for yr in range(X.year + 1, X.year + 6)) + 5
    • @Eduardo 不客气 - 不过你只需要在一个地方 +5。
    • @JonClements 谢谢,我忽略了它
    【解决方案3】:

    或者你可以使用arrow:

    >>> import arrow
    >>> ar = arrow.utcnow()
    >>> ar.shift(years=5, days=5)
    <Arrow [2022-09-04T12:50:26.609842+00:00]>
    

    【讨论】:

    • 总是忘记箭头,你可以直接做arrow.utcnow().shift(years=5, days=5)真是太好了......
    【解决方案4】:

    在这里使用第 3 方dateutilrelativedelta 是最简单的,它方便地将years 作为增量选项,并为您处理闰年,例如:

    from dateutil.relativedelta import relativedelta
    
    dt = datetime.now() + relativedelta(years=5, days=5)
    # datetime.datetime(2022, 9, 4, 13, 49, 33, 650299)
    

    【讨论】:

      猜你喜欢
      • 2022-12-30
      • 1970-01-01
      • 2020-11-11
      • 2011-07-07
      • 2020-04-04
      • 2015-03-27
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      相关资源
      最近更新 更多