【问题标题】:python: adding any number of days to datepython:添加任意天数
【发布时间】:2016-06-14 21:31:35
【问题描述】:

我希望有人能指出我在处理日期和时间增量方面的正确方向。

我的理解是,要将任何数字(例如:10 天)添加到日期,您需要将其转换为 timedelta。 如果这是正确的,当它是一个整数时,如何将任何数字添加到日期?

任何文档或链接都会很棒 - 谢谢。

代码示例,我的日期如下:

x = 20100103 (formatted as YYYYMMDD)

【问题讨论】:

  • 首先,在日期中添加数字是什么意思?什么是“数”?是天数吗?为什么使用整数而不是 Python 的 datetime and timedelta types
  • 看看this
  • @freakish 抱歉,我已经编辑了原始问题,你是对的,我想在当前日期添加任意天数
  • @antonio_zeus 好吧,您必须将日期转换为datetime 对象,将“10 天”转换为timedelta 对象。然后你可以添加它们,Python 会处理日期时间修改的所有细节。请参阅我在之前评论中链接的文档。

标签: python date timedelta


【解决方案1】:
>>> import datetime
>>> today = datetime.datetime.now().date()
>>> today
datetime.date(2016, 6, 14)
>>> today + datetime.timedelta(days=10)
datetime.date(2016, 6, 24)

无需将其转换为 timedelta。只需使用 timedelta 函数,如果要添加天数,请使用 days=N,小时数,timedelta(hours=20)

【讨论】:

    【解决方案2】:
    x=20100103
    x2 = int((datetime.datetime.strptime(str(x),"%Y%m%d") + datetime.timedelta(days=10)).strftime("%Y%m%d"))
    

    分解

    x=20100103
    x_as_datetime = datetime.datetime.strptime(str(x),"%Y%m%d") 
    new_datetime = x_as_datetime + datetime.timedelta(days=10) #add your timedelta
    x2 = new_datetime.strftime("%Y%m%d") # format it back how you want
    int(x2) # if you just want an integer ... 
    

    【讨论】:

    • 这真的很有帮助且内容丰富 - 感谢您提供额外的细分。完美运行。
    【解决方案3】:
    from datetime import datetime
    from datetime import timedelta
    
    StartDate = "20100103"
    
    Date = datetime.strptime(StartDate, "%Y%m%d")
    EndDate = Date + timedelta(days=10)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-20
      • 2012-04-27
      • 2021-10-26
      • 2016-03-23
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 2021-07-03
      相关资源
      最近更新 更多