Python 获取当前日期之前每周的开始和结束日期

Python 获取当前日期之前每周的开始和结束日期,python,datetime,calendar,Python,Datetime,Calendar,我对此做了一些研究,但没有发现任何与我想要的接近的东西。一开始我对python还很陌生,所以我的python大部分都不是很“pythonic”。。除此之外,我想得到的是当前日期之前每周的开始日期和结束日期。我主要是想得到关于如何做的建议,因为有多种不同的方法。我是否应该根据周数进行构建?或者只使用日期时间 我希望以这种格式构建它 [{ 'start': 2013-12-30, 'end': 2014-01-05 },{ 'start': 2014-01-06, '

我对此做了一些研究,但没有发现任何与我想要的接近的东西。一开始我对python还很陌生,所以我的python大部分都不是很“pythonic”。。除此之外,我想得到的是当前日期之前每周的开始日期和结束日期。我主要是想得到关于如何做的建议,因为有多种不同的方法。我是否应该根据
周数
进行构建?或者只使用
日期时间

我希望以这种格式构建它

[{
    '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
这将返回给定周号的开始和结束日期。我可以做一个循环并调用这个函数,以一年中的周数为单位,但我不确定这是否有效,或者这个方法是否可以/应该清理


任何关于我应该如何做的建议都会很有帮助:)谢谢你,所以,在循环中调用你的方法肯定会奏效。这样做的缺点是,每次调用该方法都必须重新创建所有内容。因为周是连续的,所以最好先找到第一周,然后再加上一天来找到下一周的开始。这样,您就可以在以前的工作的基础上进行构建,而不需要重新创建所有对象

一种方法是使用
getNextWeek
方法

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

你的每一周都从1月1日开始吗?我也很好奇,我知道在欧洲,将日期格式化为dd/mm/yyyy是很常见的,但是谁使用yyyy-dd-mm呢?国际标准化组织的标准是yyyy-mm-dd,从另一个角度来看是令人困惑的。从1月1日开始的一周只是一个例子。格式是另一个例子。是yyyy-mm-dd,我只是倒着写。我使用yyyy-mm-dd,因为这是我必须处理的数据库中的布局:)我继续为您编辑了它,因此它的格式正确,日期正确,似乎可行:)所以我写的方法似乎有问题,因为如果我的周数是0、1或2,它将返回2013年12月30日之前的周。。你知道我的错误在哪里吗?@JohnRuddell我在
date
timedelta
方面做得不多,但我敢打赌文档对这种行为有解释。