Есть ли в python функция, которая возвращает i-й день недели в месяце? - PullRequest
2 голосов
/ 07 ноября 2019

Учитывая дату, необходимо знать, соответствует ли она первому, второму, третьему (и т. Д.) Дню недели в месяце. Например: если запись 2017-01-04, верните: 1-е среда месяца. Если запись 2017-01-25, вернуть: 4 среда месяца. Если запись 2018-10-18, вернуть: 3-й четверг месяца.

Я искал библиотеку datetime, но не могу найти ни одной, которая возвращает это значение.

1 Ответ

1 голос
/ 07 ноября 2019

Использование weekday:

from datetime import datetime

weekday_map = {0: 'Monday',
               1: 'Tuesday',
               2: 'Wednesday',
               3: 'Thursday',
               4: 'Friday',
               5: 'Saturday',
               6: 'Sunday'}

suffix_map = {1: 'st',
              2: 'nd',
              3: 'rd',
              4: 'th',
              5: 'th'}

def which_weekday(date):
    dt = datetime.strptime(date, '%Y-%m-%d')
    which = (dt.day - 1) // 7 + 1
    weekday = weekday_map[dt.weekday()]
    return f'{which}{suffix_map[which]} {weekday} of the month'

print(which_weekday('2017-01-04'))
print(which_weekday('2017-01-25'))
print(which_weekday('2018-10-18'))

Вывод:

1st Wednesday of the month
4th Wednesday of the month
3rd Thursday of the month
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...