Модуль 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 < datetime2 | Сравнивает дату и время (3) |