
В Python определение дня недели для конкретной даты реализуется через стандартные модули datetime и calendar. Модуль datetime позволяет работать с объектами даты и времени, предоставляя методы для извлечения дня недели в числовом формате или в виде строки.
Метод weekday() возвращает число от 0 (понедельник) до 6 (воскресенье). Для получения наглядного результата можно сопоставить это число с именами дней через список или словарь. Такой подход удобен для формирования отчетов, логов или автоматизации задач, где важна точная дата.
Модуль calendar предоставляет функцию day_name, которая возвращает полное название дня недели. Этот метод особенно полезен при необходимости отображения даты в человеко-читаемом формате без дополнительного преобразования числового индекса.
Практические примеры включают определение текущего дня недели, проверку даты на выходной, а также вычисление дней недели для исторических и будущих дат. Использование встроенных модулей гарантирует точность вычислений и минимизирует необходимость внешних библиотек.
Использование модуля datetime для определения дня недели

Модуль datetime предоставляет класс date, с помощью которого можно определить день недели конкретной даты. Метод weekday() возвращает целое число от 0 (понедельник) до 6 (воскресенье), а метод isoweekday() возвращает число от 1 (понедельник) до 7 (воскресенье).
Пример использования метода weekday():
from datetime import date
today = date.today()
day_index = today.weekday()
print(day_index)
Для получения названия дня недели удобно использовать список:
days = ["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"]
print(days[day_index])
Метод isoweekday() полезен, когда требуется совместимость с международной нумерацией дней недели:
iso_index = today.isoweekday()
print(iso_index) # 1 – понедельник, 7 – воскресенье
Для анализа произвольной даты можно создать объект date с указанными годом, месяцем и днем:
specific_date = date(2025, 9, 13)
print(days[specific_date.weekday()])
Методы weekday() и isoweekday() позволяют интегрировать проверку дней недели в условные конструкции, циклы и функции, обеспечивая гибкую обработку календарных данных без использования сторонних библиотек.
Получение названия дня недели с помощью strftime

Метод strftime из модуля datetime позволяет преобразовать объект даты в строку с нужным форматом, включая название дня недели.
Пример получения полного названия дня недели:
from datetime import datetime
сегодня = datetime.now()
день_недели = сегодня.strftime("%A")
print(день_недели) # Например, "Friday"
Форматные коды для дней недели:
%A– полное название дня недели (например, «Monday»).%a– сокращённое название дня недели (например, «Mon»).
Пример с сокращённым названием:
from datetime import datetime
сегодня = datetime.now()
день_недели_короткий = сегодня.strftime("%a")
print(день_недели_короткий) # Например, "Fri"
Для локализованного отображения названий дней недели можно использовать модуль locale:
import locale
from datetime import datetime
locale.setlocale(locale.LC_TIME, "ru_RU.UTF-8")
сегодня = datetime.now()
день_недели = сегодня.strftime("%A")
print(день_недели) # Например, "Пятница"
Рекомендации при использовании strftime:
- Использовать
%Aдля полного названия и%aдля сокращённого. - Для работы с русскими названиями обязательно установить локаль с
locale.setlocale. - Метод работает с объектами
datetimeиdate.
Определение дня недели по конкретной дате
Для вычисления дня недели по конкретной дате в Python используют модуль datetime. Основной объект – datetime.date, который хранит год, месяц и день.
Пример создания даты и получения дня недели:
import datetime
date_example = datetime.date(2025, 9, 13)
weekday_number = date_example.weekday()
print(weekday_number)
Метод weekday() возвращает число от 0 до 6, где 0 – понедельник, 6 – воскресенье. Для удобного отображения можно использовать список с названиями дней:
days = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье']
print(days[weekday_number])
Альтернатива – метод isoweekday(), возвращающий 1 для понедельника и 7 для воскресенья:
iso_number = date_example.isoweekday()
print(days[iso_number-1])
Для ввода даты пользователем применяют strptime() из datetime, чтобы преобразовать строку в объект даты:
user_input = '2025-12-25'
date_obj = datetime.datetime.strptime(user_input, '%Y-%m-%d').date()
print(days[date_obj.weekday()])
Эти методы подходят для любых дат, включая прошлое и будущее, и позволяют интегрировать вычисление дня недели в отчёты, календари или планировщики.
Работа с числовым представлением дня недели
В Python числовое представление дня недели удобно получать через модуль datetime. Метод weekday() возвращает целое число от 0 до 6, где 0 соответствует понедельнику, а 6 – воскресенью. Например:
from datetime import datetime
today = datetime.now()
day_number = today.weekday()
print(day_number)
Для альтернативного варианта, где воскресенье – 0, а суббота – 6, используется метод isoweekday(), который возвращает значения от 1 (понедельник) до 7 (воскресенье). Преобразовать его в диапазон 0–6 можно с помощью (isoweekday() % 7):
day_number = today.isoweekday() % 7
print(day_number)
Числовое представление удобно для циклических вычислений, например, для планирования событий через n дней:
future_day = (today.weekday() + 10) % 7
print(future_day)
Для отображения числа в строковое название дня недели применяют списки или словари:
days = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье']
print(days[day_number])
Использование числового представления упрощает фильтрацию данных по дням недели и интеграцию с алгоритмами, требующими индексы дней для вычислений.
Преобразование строки с датой в день недели

Для преобразования строки с датой в день недели используется модуль datetime. Сначала строку нужно преобразовать в объект datetime методом strptime, указав формат даты.
Пример для строки "2025-09-13":
from datetime import datetime
date_str = "2025-09-13"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
Получение дня недели:
- Метод
weekday()возвращает число от 0 (понедельник) до 6 (воскресенье). - Метод
strftime("%A")возвращает полное название дня недели на английском.
Пример:
day_number = date_obj.weekday()
print(day_number) # 5 (суббота)
day_name = date_obj.strftime("%A")
print(day_name) # Saturday
days_ru = {
"Monday": "Понедельник",
"Tuesday": "Вторник",
"Wednesday": "Среда",
"Thursday": "Четверг",
"Friday": "Пятница",
"Saturday": "Суббота",
"Sunday": "Воскресенье"
}
print(days_ru[day_name]) # Суббота
Для строк с другим форматом указывайте соответствующий шаблон:
"13/09/2025"→"%d/%m/%Y""13-09-25"→"%d-%m-%y""2025.09.13"→"%Y.%m.%d"
Неправильное соответствие формата и строки вызывает ValueError. Всегда проверяйте точность формата.
Использование календаря для вычисления дня недели
Модуль calendar предоставляет функции для определения дня недели по дате. Основная функция – calendar.weekday(year, month, day), которая возвращает число от 0 (понедельник) до 6 (воскресенье).
Пример использования:
import calendar
day_index = calendar.weekday(2025, 9, 13)
print(day_index)
В этом случае day_index вернёт 5, что соответствует субботе.
Для получения названия дня недели удобно использовать список:
days = ["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"]
print(days[day_index])
Модуль также поддерживает функции calendar.monthcalendar(year, month), которые возвращают матрицу месяца. Она позволяет определять, на какой день недели выпадают даты месяца, что полезно для анализа расписаний.
Пример анализа первого понедельника месяца:
month_matrix = calendar.monthcalendar(2025, 9)
first_monday = month_matrix[0][0] if month_matrix[0][0] != 0 else month_matrix[1][0]
print(first_monday)
Использование календаря особенно удобно при автоматизации задач, связанных с датами и планированием, так как функции учитывают високосные годы и корректно работают с историческими датами.
Сравнение дней недели и выполнение условий по ним
В Python для получения текущего дня недели используют модуль datetime. Значение дня недели возвращается методом weekday(), где понедельник – 0, воскресенье – 6. Это позволяет сравнивать день недели с конкретными числами и выполнять действия в зависимости от дня.
Пример кода с условной проверкой:
from datetime import datetime
today = datetime.today().weekday()
if today == 0:
print("Сегодня понедельник")
elif today == 5 or today == 6:
print("Выходные")
else:
print("Будний день")
Для удобства можно создать словарь с именами дней:
days = {0: "Понедельник", 1: "Вторник", 2: "Среда", 3: "Четверг", 4: "Пятница", 5: "Суббота", 6: "Воскресенье"}
print(f"Сегодня {days[today]}")
Пример использования в условии с функцией:
def check_day(day_number):
if day_number in (5, 6):
return "Выходной"
return "Рабочий день"
status = check_day(today)
print(status)
Таблица соответствия дней недели и действий:
| День недели | Число | Действие |
|---|---|---|
| Понедельник | 0 | Начало рабочей недели |
| Вторник | 1 | Рабочий день |
| Среда | 2 | Рабочий день |
| Четверг | 3 | Рабочий день |
| Пятница | 4 | Подготовка к выходным |
| Суббота | 5 | Выходной |
| Воскресенье | 6 | Выходной |
Использование числовых значений дней недели позволяет строить условные конструкции, циклы и фильтры, например, для планирования задач или автоматизации уведомлений в зависимости от дня.
