获取导致当前日期的每周的开始和结束日期

时间:2014-06-23 20:14:28

标签: python datetime calendar

我对此做了一些研究,但没有发现任何接近我想要的东西。开始我对python很新,所以我的大部分python都不是'pythonic'。除了我想要的是获得每周的开始日期和结束日期,直到当前日期。大多数情况下,我希望得到建议的方法,因为有多种不同的方法可以做到这一点。我应该考虑将其从week number建立起来吗?或者只是使用datetime

我希望以这种格式构建它

[{
    'start': 2013-12-30,
    'end': 2014-01-05
},{
    'start': 2014-01-06,
    'end': 2014-01-12
}... etc]

我最初的尝试:

from datetime import date, timedelta

def get_week_days(self, year, week, **kwd):
    d = date(year,1,1)
    if(d.weekday()>3):
        d = d+timedelta(7-d.weekday())
    else:
        d = d - timedelta(d.weekday())
    dlt = timedelta(days = (week-2)*7)
    last_wk = {}
    last_wk['start'] = d + dlt
    last_wk['end'] = d + dlt + timedelta(days=6)
    return last_wk

这将按周数返回给定周的开始和结束日期。我可以做一个循环并将此函数称为一年中的周数,但我不确定这是否有效,或者是否可以/应该清除此方法?

关于我应该怎么做的任何建议都会有所帮助:)谢谢

1 个答案:

答案 0 :(得分:2)

因此,在循环中调用您的方法肯定会有效。缺点是你必须在每次调用方法时重新创建所有内容。由于周是连续的,因此最好找到第一周,然后再添加1天来查找下周的开始。这样,您就可以完成以前的工作,而无需重新创建所有对象。

执行此操作的一种方法是使用getNextWeek方法。

def getNextWeek(week):
  nextWeek = {};
  nextWeek['start'] = week['end'] + timedelta(days=1)
  nextWeek['end'] = nextWeek['start'] + timedelta(days=6)
  return nextWeek