Модуль datetime

Справочник

Модуль datetime

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

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

datetime.date(year, month, day)

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

import datetime
d = datetime.date(2012, 12, 14)

print(d.year) # 2012
print(d.day)  # 14
print(d.month) # 12

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

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

import datetime

a = datetime.datetime(2017, 3, 5)
print(a) # datetime.datetime(2017, 3, 5, 0, 0)

b = datetime.datetime(2017, 3, 5, 12, 30, 10)
print(b) # datetime.datetime(2017, 3, 5, 12, 30, 10)

d = datetime.datetime(2017, 3, 5, 12, 30, 10)
print(d.year) # 2017
print(d.second) # 10
print(d.hour) # 12

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 рассчитано с включенным истинным делением. Пример:

>>> from datetime import timedelta
>>> year = timedelta(days=365)
>>> another_year = timedelta(weeks=40, days=84, hours=23,
...                          minutes=50, seconds=600)  # adds up to 365 days
>>> year.total_seconds()
31536000.0
>>> year == another_year
True
>>> ten_years = 10 * year
>>> ten_years, ten_years.days // 365
(datetime.timedelta(days=3650), 10)
>>> nine_years = ten_years - year
>>> nine_years, nine_years.days // 365
(datetime.timedelta(days=3285), 9)
>>> three_years = nine_years // 3
>>> three_years, three_years.days // 365
(datetime.timedelta(days=1095), 3)
>>> abs(three_years - ten_years) == 2 * three_years + year
True

datetime.tzinfo

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

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

datetime.combine(date, time)

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

datetime.fromtimestamp(timestamp)

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

datetime.fromordinal(ordinal)

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

datetime.now(tz=None)

объект datetime из текущей даты и времени.

datetime.today()

объект datetime из текущей даты и времени. Работает также, как и datetime.now() со значением tz=None.

datetime.strptime(date_string, format)

преобразует строку в datetime по формату

Формат Значение
%a Сокращенное название дня недели
%A Полное название дня недели
%b Сокращенное название месяца
%B Полное название месяца
%c Дата и время
%d День месяца [01,31]
%H Час (24-часовой формат) [00,23]
%I Час (12-часовой формат) [01,12]
%j День года [001,366]
%m Номер месяца [01,12]
%M Число минут [00,59]
%p До полудня или после (при 12-часовом формате)
%S Число секунд [00,61]
%U Номер недели в году (нулевая неделя начинается с воскресенья) [00,53]
%w Номер дня недели [0(Sunday),6]
%W Номер недели в году (нулевая неделя начинается с понедельника) [00,53]
%x Дата
%X Время
%y Год без века [00,99]
%Y Год с веком
%Z Временная зона
%% Знак '%'

datetime.strftime(format)

преобразует datetime в строку по формату

Формат Значение
%a Сокращенное название дня недели
%A Полное название дня недели
%b Сокращенное название месяца
%B Полное название месяца
%c Дата и время
%d День месяца [01,31]
%H Час (24-часовой формат) [00,23]
%I Час (12-часовой формат) [01,12]
%j День года [001,366]
%m Номер месяца [01,12]
%M Число минут [00,59]
%p До полудня или после (при 12-часовом формате)
%S Число секунд [00,61]
%U Номер недели в году (нулевая неделя начинается с воскресенья) [00,53]
%w Номер дня недели [0(Sunday),6]
%W Номер недели в году (нулевая неделя начинается с понедельника) [00,53]
%x Дата
%X Время
%y Год без века [00,99]
%Y Год с веком
%Z Временная зона
%% Знак '%'

datetime.date()

объект даты (с отсечением времени).

datetime.isoweekday()

день недели в виде числа, понедельник — 1, воскресенье — 7.

datetime.isocalendar()

кортеж (год в формате ISO, ISO номер недели, ISO день недели).

datetime.isoformat(sep='T')

красивая строка вида «YYYY-MM-DDTHH:MM:SS.mmmmmm» или, если microsecond == 0, «YYYY-MM-DDTHH:MM:SS»

datetime.replace ([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])

возвращает новый объект datetime с изменёнными атрибутами.

datetime.time()

объект времени (с отсечением даты).

datetime.timetuple()

возвращает struct_time из datetime.

datetime.timestamp()

возвращает время в секундах с начала эпохи.

datetime.toordinal()

количество дней, прошедших с 01.01.1970.

datetime.weekday()

день недели в виде числа, понедельник — 0, воскресенье — 6.

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

Операция Результат
datetime2 = datetime1 + timedelta Прибавляет к дате указанный период
datetime2 = datetime1 — timedelta Вычитает из даты указанный период
timedelta = datetime1 — datetime2 Возвращает разницу между двумя датами
datetime1 Сравнивает дату и время(3)