Получить имя дня от 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]