Получить дату начала и окончания всех недель для данного месяца в python, исключая даты других месяцев - PullRequest
0 голосов
/ 02 декабря 2018

Мне нужно получить даты начала и окончания всех недель для данного месяца в python.

Образец ввода Декабрь 2018

Возможные выводы

01-12-2018

02-12-2018 - 08-12-2018

09-12-2018 - 15-12-2018

16-12-2018 - 22-12-2018

23-12-2018 - 29-12-2018

30-12-2018 - 31-12-2018

Я использовал модуль календаря следующим образом:

obj_cal= calendar.Calendar(firstweekday=6)
[x for x in cal.monthdatescalendar(2018, 12)]

Но это включает даты с 2018 ноября, а также с 2019 января

Как исключить даты других месяцев.

Примечание: отредактированный вопрос

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Вот мое решение:

import calendar
from datetime import timedelta

# sunday is the first day of the week
# set 0 for monday
firstweekday = 6

def weeks_in_month(year, month):
    c = calendar.Calendar(firstweekday)
    for weekstart in filter(lambda d: d.weekday() == firstweekday, c.itermonthdates(year, month)):
        weekend = weekstart + timedelta(6)
        yield (weekstart, weekend)


for weekstart, weekend in weeks_in_month(2018, 12):
    print(weekstart, '-', weekend)

Вывод:

2018-11-25 - 2018-12-01
2018-12-02 - 2018-12-08
2018-12-09 - 2018-12-15
2018-12-16 - 2018-12-22
2018-12-23 - 2018-12-29
2018-12-30 - 2019-01-05
0 голосов
/ 02 декабря 2018
>>> import datetime    
>>> import calendar
>>> cld=calendar.Calendar(firstweekday=0)
>>> for end_day in cld.itermonthdates(2018,12):
...     if end_day.weekday()==5:
...         start_day=end_day-datetime.timedelta(6)
...         print('{} - {}'.format(start_day.isoformat(),end_day.isoformat()))
... 
2018-11-25 - 2018-12-01
2018-12-02 - 2018-12-08
2018-12-09 - 2018-12-15
2018-12-16 - 2018-12-22
2018-12-23 - 2018-12-29
2018-12-30 - 2019-01-05
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...