Модуль 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) |