Datetime

Библиотечка на python для синтаксического анализа значений даты и времени

Для представления значений времени используется класс time, доступ к данным времени можно получить по атрибутам. Экземпляр класса хранит только время и его разрещшающая способность ограничена микросекундами.

>>> import datetime

>>> t = datetime.time(1, 2, 3)
>>> print(t)
01:02:03
>>> print(t.hour)
1
>>> print(t.minute)
2
>>> print(t.second)
3
>>> print(t.microsecond)
0
>>> print(t.tzinfo)
None

Даты можно извлекать через класс date используя похожий апи. Метод today() создает экземпляр текущей даты. Разрешающая способность - сутки.

>>> import datetime

>>> today = datetime.date.today()
>>> tt = today.timetuple()
>>> print(tt.tm_year)
>>> print(tt.tm_mon)
>>> print(tt.tm_mday)
>>> print(tt.tm_hour)
>>> print(tt.tm_min)
>>> print(tt.tm_sec)
>>> print(tt.tm_wday)
>>> print(tt.tm_yday)
>>> print(tt.tm_isdst)

Кроме того, экземпляр даты можно получить из существующей даты с помощью метода replace()

timedelta() позволяет получить нужный промежуток времени, с которым можно осуществлять базовый арифметические операции и сравнение. У timedelta свой апи доступа к значениям. полную длительность в секундах можно получить из объекта timedelta с помощью ёещефд_ыусщтвы()ё

>>> import datetime

>>> print(datetime.timedelta(microseconds=1))
>>> print(datetime.timedelta(milliseconds=1))
>>> print(datetime.timedelta(seconds=1))
>>> print(datetime.timedelta(minutes=1))
>>> print(datetime.timedelta(hours=1))
>>> print(datetime.timedelta(days=1))
>>> print(datetime.timedelta(weeks=1))

Класс datetime предоставляет методы fromordinal() и fromtimestamp(), позволяющие конвертировать представление даты и времени. combine() позволяет скомбинировать экземлпяр datetime из экземпляров date и time

>>> import datetime

>>> t = datetime.time(1, 2, 3)
>>> print('t :', t)
t : 01:02:03

>>> d = datetime.date.today()
>>> print('d :', d)
d : 2021-12-05

>>> dt = datetime.datetime.combine(d, t)
>>> print('dt:', dt)
dt: 2021-12-05 01:02:03

Форматирование так-же доступно через функции strftime() и strptime(). Все доступные форматы тут

Частовые пояа представлены абстрактным классом tzinfo - необходимо определить сабкласс и предоставить ему реализации методов. В datetime представляена тривиальная реализация в виде сабкласса timezone с использованием фиксированного смещения относительно UTC

>>> import datetime

>>> min6 = datetime.timezone(datetime.timedelta(hours=-6))
>>> plus6 = datetime.timezone(datetime.timedelta(hours=6))
>>> d = datetime.datetime.now(min6)

astimezone() обеспечивает преобразование одного часового пояса в другой.

>>> z = d.astimezone(plus6)

Как получимть текущее время

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)

>>> print(datetime.datetime.now())
2009-01-06 15:08:24.789150

или просто время

>>> datetime.datetime.now().time()
datetime.time(15, 8, 24, 78915)

>>> print(datetime.datetime.now().time())
15:08:24.789150

Мне показался полезным этот вариант:

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'

Или так

>>> from datetime import datetime
>>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')

Ссылка

Если надо представить разницу во времени в человекочитаемом виде, то можно так:

>>> import datetime
>>> a = datetime.datetime.now()
>>> # ...wait a while...
>>> b = datetime.datetime.now()
>>> print(b-a)
0:03:43.984000

или, если не нужны микросекунды

>>> a = datetime.datetime.now().replace(microsecond=0)
>>> b = datetime.datetime.now().replace(microsecond=0)
>>> print(b-a)
0:03:43

Документация

[date-and-time-in-python]

Еще материалы: