Получить имя дня от Weekday int

У меня есть целое число в будние дни (0,1,2...), и мне нужно получить имя дня ( "понедельник", "вторник",...).

Есть ли встроенная функция Python или способ сделать это?

Вот функция, которую я написал, которая работает, но я хотел что-то из встроенной библиотеки datetime.

def dayNameFromWeekday(weekday):
    if weekday == 0:
        return "Monday"
    if weekday == 1:
        return "Tuesday"
    if weekday == 2:
        return "Wednesday"
    if weekday == 3:
        return "Thursday"
    if weekday == 4:
        return "Friday"
    if weekday == 5:
        return "Saturday"
    if weekday == 6:
        return "Sunday"

Ответы

Ответ 1

Более Pythonic использует календарный модуль :

>>> import calendar
>>> list(calendar.day_name)
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

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

>>> list(calendar.day_abbr)
['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']

Затем проиндексируйте, как хотите:

>>> calendar.day_name[1]
'Tuesday'

(Если понедельник не первый день недели, используйте setfirstweekday, чтобы изменить его)

Использование модуля календаря имеет то преимущество, что оно известно:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
'de_DE'
>>> list(calendar.day_name)
['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag']

Ответ 2

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

import calendar
calendar.day_name[0]
'Monday'

Ответ 3

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

current_date = datetime.now
current_date.strftime('%A')  # will return "Wednesday"
current_date.strftime('%a')  # will return "Wed"

Ответ 4

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

def dayNameFromWeekday(weekday):
    days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    return days[weekday]

Если вам нужна функция, чтобы не вызывать ошибку, если вы передали недопустимый номер, например "8", вы можете проверить, существует ли этот элемент списка до его возврата:

def dayNameFromWeekday(weekday):
    days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    return days[weekday] if 0 < weekday < len(days) else None

Эта функция может использоваться так, как вы ожидали:

>>> dayNameFromWeekday(6)
Sunday
>>> print(dayNameFromWeekday(7))
None

Я не уверен, что способ сделать это встроен в datetime, но это все еще очень эффективный способ.

Ответ 5

Это очень просто:

week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
week[weekday]