Как определить день недели по дате python

от admin

Справочник

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

Классы, предоставляемые модулем datetime:

datetime.date(year, month, day)

стандартная дата. Атрибуты: year, month, day. Неизменяемый объект.

datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

содержит всю информацию объектов datetime.date плюс datetime.time.

datetime.datetime принимает несколько дополнительных аргументов: год, месяц, день, час, минута и секунда. Это также позволяет вам указывать информацию о микросекундах и часовом поясе.

datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

стандартное время, не зависит от даты. Атрибуты: hour, minute, second, microsecond, tzinfo.

datetime.timedelta

описывает определенный период во времени, который находится между двумя различными моментами

Атрибут Значение
days Между −999999999 and 999999999 включительно
seconds Между 0 и 86399 включительно
microseconds Между 0 и 999999 включительно

Поддерживаемые операции

Операция Результат
t1 = t2 + t3 Суммирует дельту между датами
t1 = t2 — t3 Разница дельт между датами
t1 = t2 * i or t1 = i * t2 Умножение дельты на целое число
t1 = t2 * f or t1 = f * t2 Дельта умножается на число с плавающей точкой
f = t2 / t3 Деление общей длительности t2 на интервал t3. Возвращает объект с плавающей точкой
t1 = t2 / f or t1 = t2 / i Дельта делится на число с плавающей точкой или целое
t1 = t2 % t3 Остаток часть вычисляется как объект timedelta
q, r = divmod(t1, t2) Вычисляет частное и остаток: q = t1 // t2 (3) и r = t1% t2. q — целое число, а r — объект deltatime
+t1 Возвращает объект timedelta с полностью идентичным значением t1
—t1 возвращает объект timedelta с полностью противоположным значением t1
abs(t) возвращает объект timedelta с положительным значением всех свойств t
str(t) возвращает строковое представление объекта a в формате, заданном по умолчанию
repr(t) возвращает строковое представление объекта a в формате с отрицательными значениями

timedelta.total_seconds()

Возвращает общее количество секунд, содержащихся в продолжительности. Эквивалентно (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 * 6)/10 * 6 рассчитано с включенным истинным делением. Пример:

datetime.tzinfo

абстрактный базовый класс для информации о временной зоне (например, для учета часового пояса и/или летнего времени).

Методы класса datetime:

datetime.combine(date, time)

объект datetime из комбинации объектов date и time.

datetime.fromtimestamp(timestamp)

дата из стандартного представления времени.

datetime.fromordinal(ordinal)

дата из числа, представляющего собой количество дней, прошедших с 01.01.1970.

Класс date в Python

Класс date в Python является частью модуля datetime. Объект представляет дату (год, месяц и день) в календаре. 1 января года 1 называется днем номер 1, 2 января года 1 называется днем номер 2 и так далее.

Мы можем создать экземпляр даты, используя следующий заводской метод.

Все аргументы являются обязательными и должны быть целым числом в допустимом диапазоне.

Значение года должно находиться в диапазоне 1-9999, месяц – в диапазоне 1–12, а день – в диапазоне допустимых дней в данном месяце года.

Текущая дата и время в Python

Время и дата играют важнейшую роль при решении определенных задач в программировании. Разработчику на Python приходится нередко использовать точные значения текущей (current) даты, к примеру, при сохранении информации в базе данных, вычислениях, регистрации, обеспечении доступа и т. д. В этой статье пойдет разговор о том, как узнать текущие временные значения с помощью модуля datetime. Вдобавок к этому, читатель узнает о временных настройках для разных часовых поясов и преобразовании объектов datetime в метки времени Unix.

Получаем текущую дату и время

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

  1. datetime.date: день, месяц и год;
  2. datetime.time: время в часах, минутах, секундах, а также микросекундах. Тут дата значения не имеет;
  3. datetime.datetime: здесь хранятся атрибуты date и time.

Для примера можно вывести в терминал текущую (current) дату и время. Можно воспользоваться объектом datetime.datetime — из него довольно просто извлекаются объекты date и time. Сначала следует импортировать требуемый модуль:

from datetime import datetime

Да, это выглядит странновато, т. к. речь идет о получении класса datetime из модуля datetime, однако это 2 разные вещи. Далее следует воспользоваться функцией now() — она позволит получить объект с текущим временем и датой.

from datetime import datetime

Набрав код выше, вы увидите на экране следующее (в вашем случае вывод изменится, ведь минуты не стоят на месте):

Что произошло? Функция now() отобразила объект, причем с датой и временем создания этого самого объекта. В результате была выведена соответствующая строка. Однако никто не мешает получить временные атрибуты отдельно:

Таким образом, метод now() вполне годится для получения текущей даты и времени. Но что делать, если надо получить лишь дату?

Работа с датой current

Существуют 2 способа получения текущей даты. Первый выводит нужные данные из объекта datetime посредством метода date() :

Во втором применяется метод today() класса date:

Класс datetime.date позволяет получать календарную дату. Также следует добавить, что его атрибуты (year, month, day) бывают доступны и отдельно, как в примере с datetime.

Тут все понятно и просто. Но есть нюанс: если надо получить день недели, прописывают current_date.weekday()+1 . Дело в том, что нумерация дней недели начинается с нуля, то есть понедельник — это 0, вторник — 1, среда — 2 и так далее. Если такое положение вещей устраивает, +1 можно и не добавлять.

А как поступить, если надо отобразить текущее время отдельно от даты?

Работаем с текущим временем

Текущее время от объекта datetime получают посредством метода time() . Вот как это выглядит:

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

Важно отметить, что есть возможность получить временные данные и с учетом нужного часового пояса (timezone). Как и что используется, поговорим ниже.

Другой часовой пояс: временные зоны (timezones)

Метод now() принимает в Python временную зону в качестве аргумента, так что объект datetime генерируется соответствующим образом.

Для получения информации с учетом часового пояса необходимо задействовать библиотеку pytz (если ее нет, потребуется инсталляция, для чего подойдет команда pip3 install pytz ).

Так как я нахожусь в Минске, давайте получим текущие временные значения (times) именно для Минска:

Строка в коде minsk_current_datetime является объектом datetime, то есть все то же самое, что и ранее, но уже в полном соответствии с часовым поясом Республики Беларусь.

Когда надо узнать время в UTC, тоже пригодится модуль pytz:

Получить время UTC можно и без модуля pytz, т. к. datetime имеет полезное свойство timezone. Что же, давайте задействуем свойство timezone:

Таким образом, можно без проблем преобразовать текущие даты и значения времени в различные часовые пояса.

Преобразование временных меток

Также может быть очень полезным преобразовывать время в один из самых широко применяемых форматов в вычислениях. Речь идет о временных метках Unix.

Доподлинно известно, что компьютерные системы измеряют время не так, как люди. Здесь за основу берется число секунд, которые прошли с начала Unix-эпохи, то есть с 00:00:00 UTC 1.01.1979. Базы данных, протоколы и приложения обычно задействуют временную метку.

Для ее получения в «Питоне» пригодится модуль time, следовательно, первая строка будет import time :

Функция time.time() возвращает пользователю число с плавающей запятой и с временной меткой Unix.

На этом все. Очень надеемся, что вы получили некоторое представление об использовании встроенных Python-библиотек и модулей, необходимых для отображения временных значений.

Модуль datetime в Python: как работать с датой и временем

Информация о дате в Python — это не отдельный тип данных. Поэтому для выполнения операций с датой и временем используется модуль datetime . Вначале нужно его импортировать — это даст возможность работать с датами как с объектами отдельного типа.

Как вывести подробную текущую дату

Этот код отображает сведения о текущем времени и выводит на экран подробную дату вплоть до микросекунд:

Создание конкретной даты

Для создания конкретной даты используется класс datetime() одноименного модуля . Класс datetime() определяется тремя аргументами для создания даты: год, месяц, день. Давайте посмотрим, как это выглядит в коде:

Функция strftime()

Функцию strftime() используют для преобразования объектов даты и времени в их строковое представление. Этот значительно упрощает настройку формата времени и даты при выводе на экран.

Как вывести на экран год и день недели с помощью strftime()

Параметр метода strftime() Описание Пример
%a День недели сокращенно Wed
%A День недели Wednesday
%w Номер дня недели, начиная с Sunday — 0, Monday — 1… 3
%d День месяца 15
%b Название месяца

Актуальная дата

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

В консоли отобразится следующий формат даты:

Актуальное время

Для получения текущего времени нужно вернуть данные про актуальную дату и время, после чего извлечь информацию про время с помощью метода time :

С помощью атрибутов модуля datetime можно получать разные версии отображения времени. Применим функцию dir() и укажем нужный атрибут:

Если есть необходимость работать со временем как с объектом, применим класс time модуля datetime . Структура класса описывается следующим образом: datetime.time(hour, minutes, seconds) .

Создать новую дату

Чтобы создать новую дату, воспользуемся синтаксисом datetime.datetime(year,month,day) :

Определить временной промежуток

Для определения временного промежутка используется атрибут timedelta() . Объект timedelta выглядит вот так:

Расстояние между датами

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

Обращаясь к timedelta , можно выполнять разные математические операции. Например, вы можете добавлять дни, минуты, секунды, часы, недели к объекту datetime.date или datetime.datetime :

Поскольку аргументы timedelta по умолчанию установлены в ноль, у нас есть возможность использовать их выборочно, что позволяет добавлять, скажем, только минуты:

Сравнение дат

Также можно сравнить даты. Например:

Операции с часовыми поясами

В Python cуществует два типа данных, содержащих информацию о времени: абсолютные ( naive ) и относительные ( aware ).

Они отличаются тем, что в случае с абсолютными датами ( naive ) информация о временном поясе не учитывается. В случае же с относительными ( aware ) информация про временной пояс передается и также учитывается летнее время. Соответственно, абсолютные данные удобнее для работы.

Отличия между основными стандартами времени

  • GMT (Greenwich Mean Time — среднее время по Гринвичу или гринвичское время) — это официальный часовой пояс, используемый в некоторых странах Европы и Африки. Например, местное время для Берлина 2020–10–17 09:40:33.614581+02:00 GMT. Время в Санкт-Петербурге на 3 часа опережает время в GMT.

Как создать простой aware-объект datetime, учитывающий часовой пояс

Один из недостатков библиотеки datetime Python — отсутствие поддержки часовых поясов. В случае, когда нужно учитывать часовой пояс, используется другая библиотека – pytz . В первой строке кода эту библиотеку также нужно импортировать. Предположим, что нам необходимо задать время в столице Кении — Найроби:

Читать:
Audioodg exe что такое

Похожие статьи