Библиотека datetime в Python предназначена для работы с датой с точностью до микросекунд.
В данной библиотеке основные манипуляции производятся при помощи класса datetime.datetime, но в ней существуют так же другие классы, расширяющие возможности управления данными.
Классы доступные из библиотеки datetime.
- .datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None) — Класс описывающий дату начиная с года, заканчивая микросекундами. Нельзя создать несуществующую дату, например, чтобы в феврале было 30 дней.
- .date(year, month, day) — Класс описывающий дату без учёта времени.
- .time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None) — Класс для работы только со временем. Год, месяц и ,тем более, день недели в данном классе не учитывается.
- .timedelta — Класс позволяющий получить разницу между двумя датами, с точностью до микросекунд.
- .tzinfo — абстрактный базовый класс для информации о временной зоне (например, для учета часового пояса и / или летнего времени).
В основном вы получаете дату в виде строки. Чтобы в Python преобразовать строку «01.01.2000 10:05» в тип данных datetime необходимо применить метод .strptime(time, format)
. Первым аргументом передайте строку с датой, а вторым форматную строку из спец-символов таблицы, по которой будет разбираться дата и время.
str_time = '01.01.2000 10:05' date_time = dt.strptime(str_time, '%d.%m.%Y %H:%M') # Наличие точек и двоеточий из оригинальной строки обязательно
Таким образом мы получим тип данных datetime с которым можно продолжать работать и преобразовывать
Спецсимволы строк для форматирования даты
спецзнак | обозначение |
---|---|
%a | неполное название дня недели. (Sun. Mon. ) |
%A | полное название дня недели(sunday, monday) |
%b | неполное название месяца(Jan. Feb.) |
%B | полное название месяца(January. February.) |
%c | формат даты с временем |
%d | номер дня месяца(01-31) |
%-d | номера дня месяца без лидирующего нуля(1-31). Символ «-» отменяет лидирующие нули во всех спецсимволах. |
%H | час в 24-часовом формате |
%I | час в 12-часовом формате |
%j | номер дня года(01-366) |
%m | номер месяца(01-12) |
%M | минуты(00-59) |
%p | PM или AM при 12-часовом формате |
%S | секунды(0-59) |
%U | номер недели в году(0-53) (неделя начинается в вс) |
%w | номер дня недели(0-6) |
%W | номер недели в году(0-53) (неделя начинается в пн) |
%x | только дата |
%X | только время |
%y | двузначный формат года (00-99) |
%Y | четырёхзначный формат |
%Z | часовой пояс |
%% | знак «%» |
Точно такую же таблицу можно найти в библиотеке time
Методы datetime
Для работы с методами класса datetime необходимо его импортировать из одноимённой библиотеки datetime. В самом начале файла пропишите следующий код.from datetime import datetime as dt
.now(tz=None)
— возвращает текущую дату и время . Возвращаемый объект относится к классу datetime.datetime
.date(today)
— возвращает дату без времени, класс datetime.date. Аргумент today должен являться классом datetime.datetime
.time(today)
— возвращает только время, объект класса datetime.time. Аргумент today должен являться классом datetime.datetime.
.weekday(today)
— возвращает индекс дня недели, число от 0 до 6 включительно. today должен быть класса datetime.datetime или datetime.date.
.isoweekday(today)
— возвращает номер дня недели, число от 1 до 7 включительно. today должен быть класса datetime.datetime или datetime.date.
.timetuple()
— применяется к объекту класса datetime и преобразует его в struct_time. Возвращает новое значение. struct_time — специальный тип данных из библиотеки time.
.strftime(format)
— применяется к объекту класса datetime, преобразует его в строку и возвращает её. Преобразование происходит согласно аргумету format. format составляется из спецсимволов таблицы выше.
.strptime(str_time, format)
— разбирает строку str_time по шаблону переданному в строке format и возвращает объект datetime. Смотрите пример выше.
Это далеко не все методы данной библиотеки. Чтобы не усложнять материал, я выбрал наиболее простые и часто используемые. Более подробное описание тут.