【问题标题】:How to roll start and end date in a month?如何在一个月内滚动开始和结束日期?
【发布时间】:2017-07-09 20:23:22
【问题描述】:

我想写一个函数,可以提前 1 年,但可以接受某个月份作为开始计数的日期。

例如,如果开始时间是1/1/2011,那么结束时间是1/1/2012。新的开始时间为1/2/2011,新的结束时间为1/2/2012。开始和结束时间应该这样提前。

这是我的尝试:

    import datetime
from dateutil.relativedelta import relativedelta
from datetime import date

def Count(StartDate, EndDate,count):
     #while StartDate < FinalDate:
     count = 1
     print (StartDate, EndDate)

StartDate = date(2011,01,01)
FinalDate = date (2014,01,01)
EndDate = StartDate + relativedelta(years=+1)
count = 1


a = Count(StartDate, EndDate,count)
print a

打印类似的东西

(datetime.date(2011, 2, 1), datetime.date(2012, 2, 1))
None
(datetime.date(2011, 3, 1), datetime.date(2012, 3, 1))
None
(datetime.date(2011, 4, 1), datetime.date(2012, 4, 1))
None
(datetime.date(2011, 5, 1), datetime.date(2012, 5, 1))
None
(datetime.date(2011, 6, 1), datetime.date(2012, 6, 1))
None

【问题讨论】:

  • 您查看过 datetime 函数...或用 Google 搜索过什么吗?
  • 请展示你的作品。 SO 不是代码编写服务。
  • 这是我第一次在这里提问,所以我想找出一种方法来发布我的代码。
  • 你可以edit你的问题,然后把代码复制粘贴进去。然后,选择刚刚粘贴的内容并使用{} 按钮指示它应该显示为代码。
  • 谢谢,我刚刚编辑了我的帖子。

标签: python python-dateutil


【解决方案1】:
from dateutil.relativedelta import relativedelta

new_date = old_date + relativedelta(years=1)

#you can use this for getting the 1 year later date 
#or use

#adding to date
from datetime import datetime, timedelta
new_date = datetime.today()
new_date = new_date + timedelta(months=1)
new_date = new_date + timedelta(years=1)

【讨论】:

  • 如果你明白那是评论
  • 我没有对您的帖子投反对票。除非有人 cmets,否则无法知道谁对您的帖子投了反对票。 Stack Overflow 上的投票是匿名的。我可以推理为什么有人可能有。你给出的代码只回答了一个低质量的问题。这只会鼓励更多低质量的问题。
  • 但我只是想帮忙
  • @abhishek why did you downvote 更正您回答中的问题,然后询问他们为什么投反对票。不是每个人都会明白您的 // 是评论
  • 其实我是新手......所以我有点困惑但纠正了它。
【解决方案2】:
import datetime
from dateutil.relativedelta import relativedelta
from datetime import date

def Count(StartDate, EndDate,count):
     #while StartDate < FinalDate:
     count = 1
     print (StartDate, EndDate)

    StartDate = date(2011,01,01)
    FinalDate = date (2014,01,01)
    EndDate = StartDate + relativedelta(years=+1)
    count = 1

    while StartDate < FinalDate:
         StartDate = StartDate + relativedelta(months=+1)
         EndDate = StartDate + relativedelta(years=+1)
         a = Count(StartDate, EndDate,count)
         print a

【讨论】:

  • 我想我得到了我想要的答案。谢谢你们试图帮助我。我想我无法清楚地提及我在寻找什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
  • 2014-05-29
相关资源
最近更新 更多