2015-06-04 5 views
3

Как получить начальную дату и дату окончания недели, номер недели и год на python?Получить начальную дату и дату окончания недели, указать номер недели и год

Я попытался это:

def get_start_end_dates(year, week): 

    dlt = timedelta(days = (week - 1) * 7) 
    d = date(year, 1, 1) 
    return d + dlt, d + dlt + timedelta(days=6) 

Но с этой функцией я предполагаю, что первая неделя года начинается с понедельника.

+0

Возможный дубликат: http://stackoverflow.com/questions/304256/whats-the-best-way-to-find-the-inverse-of-datetime-isocalendar – sk1p

+0

[Судный день алгоритм] (http://en.wikipedia.org/wiki/Doomsday_rule) может вас заинтересовать. Например, чтобы вычислить «конец света» в течение определенного года, вы можете просто использовать следующую функцию: '' doomsday = lambda y: (2 + 5 * (y% 4) + 4 * (y% 100) + 6 * (y% 400))% 7''. – pzp

+0

Возможный дубликат [Howto вычисляет первую дату недели и последнюю дату недели в python] (http://stackoverflow.com/questions/10908499/howto-calculate-first-date-of-week-and-last-date- for-week-in-python) –

ответ

2

Я установил вашу функцию:

def get_start_end_dates(year, week): 
    d = date(year,1,1) 
    if(d.weekday()<= 3): 
     d = d - timedelta(d.weekday())    
    else: 
     d = d + timedelta(7-d.weekday()) 
    dlt = timedelta(days = (week-1)*7) 
    return d + dlt, d + dlt + timedelta(days=6) 

Он получает правильный начальный и конечный день недели в данном году.

Он также предполагает, что годы с первого дня года в пятницу, субботу или воскресенье имеют 1 неделю на следующей неделе. См. Здесь: http://en.wikipedia.org/wiki/Week

+0

Это решение стоит дорого! Код работает для Python 3.5.2 –

+0

Что делать, если я хочу получить воскресенье как первый день и субботу в последний день? –

Смежные вопросы