Работа с datetime в Python
Для проведения самых распространенных действий с датой и временем в Python (преобразования и арифметические операции) наиболее удобны библиотека datetime и dateutil. В этом статье рассмотрим ключевые манипуляции:
Преобразования типов
datetime <-> строка
Чтобы получить дату и время из строки, воспользуйтесь функцией strptime модуля datetime:
from datetime import datetime d = datetime.strptime('1970-01-01 03:01:01', '%Y-%m-%d %H:%M:%S') d
Обратное преобразование из даты в строку можно осуществить методом strftime:
d.strftime('%H:%M:%S %Y/%m/%d')
datetime<>unix timestamp¶
Получить дату и время из unix timestamp (количество секунд, прошедших с 01 января 1970 - "начало эпохи") можно с функцией fromtimestamp (в локальном времени или выбранном часовом поясе) или utcfromtimestamp (в универсальном скоординированном времени):
display(datetime.fromtimestamp(1666622222)) display(datetime.utcfromtimestamp(1666622222))
Наоборот, получить количество секунд с начала эпохи из datetime можно методом timestamp:
d = datetime.strptime('2022-11-11 03:01:01', '%Y-%m-%d %H:%M:%S') d.timestamp()
Текущие дата и время
Зачастую нас интересуют текущие даты и метки времени, которые возвращаются функциями today, now (с возможностью задания часового пояса), utcnow (универсальное время UTC):
display(datetime.today()) display(datetime.now()) display(datetime.utcnow())
Получение частей времени
Для получения частей даты и времени используйте представленные ниже атрибуты и методы с интуитивно понятным значением:
d = datetime.strptime('2022-11-11 03:01:01', '%Y-%m-%d %H:%M:%S') d.year, d.month, d.day, d.hour, d.minute, d.second, d.weekday()
Операции
Для простоты проведения операций с датой и временем используйте модуль dateutil.relativedelta, в котором можно указать единицы разности в годах, месяцах, днях...:
from dateutil.relativedelta import relativedelta datetime.today() - relativedelta(years=2, months=1, days=5, hours=3, minutes=10, seconds=10)