Дата / время количество дней разница по группам по месяцам - PullRequest
0 голосов
/ 30 января 2020

Я хочу найти дни между двумя датами, но сгруппированы по месяцам.

Пример:

start = datetime(2020,10,1)
end = datetime(2020,12,15)

end - start

> datetime.timedelta(days=75)

Я хочу, чтобы эти 75 дней были сгруппированы по месяцам:

  • 30 дней в октябре
  • 30 дней в ноябре
  • 15 дней в декабре

Заранее спасибо.

1 Ответ

1 голос
/ 30 января 2020

Использование itertools.groupby для получения количества дней в каждом месяце:

import calendar
from datetime import datetime, timedelta
from itertools import groupby

start = datetime(2020,10,1)
end = datetime(2020,12,15)

for v, g in groupby(((start + timedelta(days=i)).month for i in range(1, (end - start).days + 1))):
    l = sum(1 for _ in g)
    print('{} {} in {}'.format(l, 'day' if l == 1 else 'days', calendar.month_name[v]))

Печать:

30 days in October
30 days in November
15 days in December
...