Азы

Библиотека datetime в Python

Опубликовано

Библиотека 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)
%pPM или 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. Смотрите пример выше.

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

Добавить комментарий

Ваш адрес email не будет опубликован.