Перевод секунд с эпохи в datetime в Python: элегантно и просто
Быстрый ответ
Для преобразования времени из секунд, прошедших с начала эпохи, в объект datetime в Python, вам потребуется выполнить следующую операцию:
from datetime import datetime
datetime.fromtimestamp(1633076672) # В результате у вас появится объект datetime!
Не забудьте заменить 1633076672 на актуальный таймстамп.
Если вам потребуется работать с часовыми поясами, представлю вам несколько способов корректного преобразования.

Преобразование в локальное время и UTC
Для работы с часовыми поясами вы можете преобразовать таймстамп в локальное время или в UTC следующим образом:
from datetime import datetime, timezone
datetime.fromtimestamp(1633076672, timezone.utc)
Если вам нужно получить строгое время по UTC, то воспользуйтесь utcfromtimestamp():
datetime.utcfromtimestamp(1633076672)
# Таким образом вы наверняка не пропустите чаепитие в Лондоне.
Учтите, что для дат ранее 1970 года на Windows использование fromtimestamp может быть некорректным, так что лучше применять utcfromtimestamp.
Форматирование объекта datetime
Получив объект datetime, вы можете отформатировать его для лучшей читаемости, используя метод strftime():
datetime.fromtimestamp(1633076672).strftime('%Y-%m-%d %H:%M:%S')
# Теперь объект datetime представлен в виде строки.
Так данные станут гораздо более понятными.
Обработка возможных исключений
Важно помнить о некоторых нюансах при работе с таймстампами:
- Отрицательные временные метки начала эпохи: Unix с такими справится, но Windows может распознать их некорректно.
Формат ISO 8601: Чтобы соответствовать стандартам, используйте
isoformat().PythonСкопировать кодdatetime.fromtimestamp(1633076672, timezone.utc).isoformat()Особенности работы с различными платформами: Этот фактор всегда стоит учитывать. Ошибки могут приводить к проблемам, особенно при работе на Windows.
Работа с исключением ValueError
При использовании fromtimestamp вы можете столкнуться с исключением ValueError, если временная метка выходит за границы диапазона, поддерживаемого библиотекой datetime. В таком случае следует обратиться к блоку try...except.
Визуализация
Для наглядного представления преобразования секунд с начала эпохи в datetime можно себе визуализировать следующую последовательность действий:
Прошло с начала эпохи в секундах: 🕰️ 1610023456
|
🔑 datetime.fromtimestamp()
|
Datetime: 📅 2021-01-07 13:57:36
Или такой код на Python:
from datetime import datetime
datetime.fromtimestamp(1610023456) # И в результате получаем объект datetime!
Представьте себе, что временные метки — это зашифрованные сообщения из истории, а datetime — это ключ к их тайне.
Что скрывает под собой применение: Python 2 и дополнительные библиотеки
Поддержка Python 2
Если вы сталкиваетесь с необходимостью обратной совместимости с Python 2, вам пригодится библиотека pytz:
import pytz
datetime.fromtimestamp(1633076672, pytz.utc)
Дополнительные библиотеки
Для работы с датой и временем на более глубоком уровне вы можете воспользоваться дополнительными библиотеками, такими как Arrow и dateutil:
import arrow
arrow.get(1633076672).to('US/Pacific')
Всегда помните о необходимости импорта соответствующих модулей и библиотек (например, datetime, timezone, pytz), иначе Python не сможет выполнить нужные операции.
Полезные материалы
- datetime — Базовые типы даты и времени — Документация Python 3.12.2 — Гид по использованию модуля Python
datetime. - Epoch Converter – Конвертер Unix временных меток — Инструмент для конвертации времени с начала эпохи в привычный формат.
- python – Как конвертировать строку временной метки Unix в читаемую дату – Stack Overflow — Собрание полезных советов и рекомендаций программистов по работе с временными метками.
- Unix время – Википедия — Информация об истории и особенностях Unix времени.
- Arrow: лучшие приёмы работы с датами и временем в Python — Документация Arrow 🏹 1.3.0 — Информационный ресурс о библиотеке Arrow для работы с временем.
- dateutil – усовершенствованные расширения для datetime — документация dateutil 2.8.2 — Подробный гид по
dateutilи его функционалу в Python. - База данных часовых поясов — Справочная информация для работы с часовыми поясами.


