Получение дня недели в Python с примерами кода

Как получить день недели в python

Как получить день недели в python

В Python определение дня недели для конкретной даты реализуется через стандартные модули datetime и calendar. Модуль datetime позволяет работать с объектами даты и времени, предоставляя методы для извлечения дня недели в числовом формате или в виде строки.

Метод weekday() возвращает число от 0 (понедельник) до 6 (воскресенье). Для получения наглядного результата можно сопоставить это число с именами дней через список или словарь. Такой подход удобен для формирования отчетов, логов или автоматизации задач, где важна точная дата.

Модуль calendar предоставляет функцию day_name, которая возвращает полное название дня недели. Этот метод особенно полезен при необходимости отображения даты в человеко-читаемом формате без дополнительного преобразования числового индекса.

Практические примеры включают определение текущего дня недели, проверку даты на выходной, а также вычисление дней недели для исторических и будущих дат. Использование встроенных модулей гарантирует точность вычислений и минимизирует необходимость внешних библиотек.

Использование модуля datetime для определения дня недели

Использование модуля 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

Метод 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")

Получение дня недели:

  1. Метод weekday() возвращает число от 0 (понедельник) до 6 (воскресенье).
  2. Метод 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 Выходной

Использование числовых значений дней недели позволяет строить условные конструкции, циклы и фильтры, например, для планирования задач или автоматизации уведомлений в зависимости от дня.

Вопрос-ответ:

Ссылка на основную публикацию