Преобразуем объект datetime в секунды (timestamp):
Задача: имеем объект datetime, необходимо его преобразовать в секунды (timestamp).
>>> import datetime
# Для преобразования получим объект `datetime`,
# содержащий дату и время в настоящий момент
>>> dt = datetime.datetime.now()
>>> dt
# datetime.datetime(2020, 5, 6, 13, 52, 5, 208688)
# теперь получаем из `datetime` секунды - `timestamp`
>>> second = dt.timestamp()
>>> second
# 1588762325.208688
# можно быстрее, одной строкой
>>> second = datetime.datetime.now().timestamp()
# 1588762325.208688
# если не нужны доли секунд, то
# преобразуем в тип int
>>> int(second)
# 1588762325
Преобразуем время в секундах (timestamp) в объект datetime:
Задача: имеем время в секундах, необходимо из секунд получить объект datetime, что бы потом что-то сделать.
>>> import datetime
# имеем время в секундах
second = 1588762325
# преобразовываем секунды в объект 'datetime'
# его же методом '.timestamp()'
>>> dt = datetime.datetime.fromtimestamp(second)
>>> dt
# datetime.datetime(2020, 5, 6, 13, 52, 5)
# дальше работаем как с объектом
# получаем строку
>>> dt.strfptint('%d.%m.%Y %H:%M')
# '06.05.2020 13:52'
# через сколько новый год
>>> future_dt = datetime.datetime.strptime('01.01.2021', '%d.%m.%Y')
>>> delta = future_dt - dt
# через дней
>>> delta.days
# 239
# секунд
>>> delta.seconds
# 36475
# месяцев
>>> 239 // 30
# 7
Получить объект datetime из отдельных объектов date и time:
>>> import datetime
# дата
>>> date = datetime.date.today()
# время
>>> time = datetime.time(23, 55)
# интервал
>>> delta = datetime.timedelta(minutes=30)
# соединяем все вместе
>>> datetime.datetime.combine(date, time) + delta
# datetime.datetime(2020, 5, 6, 0, 25)
Узнать дату и время предстоящего или прошедшего события.
>>> import datetime
>>> today = datetime.datetime.now()
# узнаем, какая дата будет через 3 недели и 5 дней
>>> delta = datetime.timedelta(weeks=3, days=5)
>>> date = today + delta
>>> date.day, date.month, date.year
# (1, 6, 2020)
# узнаем, какая дата была 100 дней назад
>>> delta = datetime.timedelta(days=100)
>>> date = today - delta
>>> date.day, date.month, date.year
# (27, 1, 2020)
# узнаем, сколько время будет через 1 час 30 минут и 45 секунд
>>> delta = datetime.timedelta(hours=1, minutes=30, seconds=45)
>>> date = today + delta
>>> date.hour, date.minute, date.second
# (16, 18, 15)
Сравнение объектов datetime.datetime():
datetime1 считается меньше datetime2, когда datetime1 предшествует datetime2 во времени
При сравнении datetime1 c параметром tz не равным None с datetime2, у которого параметром tz=None вызывается TypeError.
При сравнений на равенство datetime1 c параметром tz не равным None никогда не будут равен datetime2, у которого параметром tz=None.
>>> import datetime
>>> today = datetime.datetime.now()
>>> delta = datetime.timedelta(weeks=3, days=1)
>>> date = today - delta
>>> date < today
# True
>>> date = today + delta
>>> date < today
# False
>>> date > today
# True
# Сравнение с заранее заданной датой
>>> today = datetime.datetime.now()
>>> date = datetime.datetime(2020, 5, 6)
>>> date.date() == today.date()
# True