Создать список списка для начальной и конечной даты недели из диапазона дат - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь создать список недель, введя дату начала и дату окончания. Скажем, если дата начала 2019-05-01 и дата окончания 2019-05-31 тогда я хотел бы создать список из списка, как это

[['2019-04-29','2019-05-05'],['2019-05-06','2019-05-12'],['2019-05-13','2019-05-19'],['2019-05-20','2019-05-26'],['2019-05-27','2019-06-02']]

Спасибо.

1 Ответ

1 голос
/ 11 июля 2019

Вы можете использовать calendar встроенный модуль ( doc ) для получения недель:

import calendar
from datetime import datetime, timedelta

def get_all_weeks(start_date, end_date):
    start_date = datetime.strptime(start_date, '%Y-%m-%d').date()
    end_date = datetime.strptime(end_date, '%Y-%m-%d').date()
    one_day, one_week = timedelta(days=1), timedelta(days=7)
    current_week_start = calendar.Calendar().monthdatescalendar(start_date.year, start_date.month)[0][0]
    while True:
        if current_week_start + one_week <= start_date:
            current_week_start += one_week
            continue
        if current_week_start > end_date:
            break
        yield [current_week_start.strftime('%Y-%m-%d'), (current_week_start + one_week - one_day).strftime('%Y-%m-%d')]
        current_week_start += one_week

d_start = '2019-05-01'
d_end = '2019-05-31'

weeks = [*get_all_weeks(d_start, d_end)]

from pprint import pprint
pprint(weeks)

Печать:

[['2019-04-29', '2019-05-05'],
 ['2019-05-06', '2019-05-12'],
 ['2019-05-13', '2019-05-19'],
 ['2019-05-20', '2019-05-26'],
 ['2019-05-27', '2019-06-02']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...