Как я могу выбрать все воскресенья в течение года с помощью Python?

Использование Python...

Как я могу выбрать все воскресенья (или какой-либо день в этом отношении) через год?

[ '01/03/2010','01/10/2010','01/17/2010','01/24/2010', ...]

Эти даты представляют воскресенья на 2010. Это могло также относиться к любому дню недели, которую я предполагаю.

23
задан Ryan Montgomery 5 January 2010 в 02:48
поделиться

2 ответа

Вы можете использовать дату из datetime модуля, чтобы найти первое воскресенье в году, а затем продолжать добавлять семь дней, генерируя новые воскресенья:

from datetime import date, timedelta

def allsundays(year):
   d = date(year, 1, 1)                    # January 1st
   d += timedelta(days = 6 - d.weekday())  # First Sunday
   while d.year == year:
      yield d
      d += timedelta(days = 7)

for d in allsundays(2010):
   print(d)
46
ответ дан 29 November 2019 в 01:05
поделиться

Используя модуль dateutil, вы можете сгенерировать список следующим образом:

#!/usr/bin/env python
import dateutil.relativedelta as relativedelta
import dateutil.rrule as rrule
import datetime
year=2010
before=datetime.datetime(year,1,1)
after=datetime.datetime(year,12,31)
rr = rrule.rrule(rrule.WEEKLY,byweekday=relativedelta.SU,dtstart=before)
print rr.between(before,after,inc=True)

Хотя найти все воскресенья не так уж и сложно без dateutil, модуль удобен, особенно если у вас есть более сложные или разнообразные вычисления дат.

Если вы используете Debian/Ubuntu, dateutil предоставляется пакетом python-dateutil.

.
7
ответ дан 29 November 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: