Как правильно конвертировать UTC в эпоху в Python

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Желаете преобразовать объект datetime в секунды Unix-эпохи? Воспользуйтесь следующим небольшим фрагментом кода:

Python
Скопировать код
from datetime import datetime

# Задайте интересующую вас дату и время
dt = datetime(2023, 1, 1)
epoch = int(dt.timestamp())

print(epoch)  # Теперь у вас в руках "секунды" времени!

Метод timestamp() вашего объекта datetime позволит получить время в формате эпохи. Не забудьте только передать свою переменную вместо dt.

Кинга Идем в IT: пошаговый план для смены профессии

Путеводитель по Python: версия 3.3 или старше

Если вы используете версию Python ниже 3.3 и у вас отсутствует метод datetime.timestamp(), количество секунд с момента начала Unix-эпохи можно расчитать следующим образом:

Python
Скопировать код
from datetime import datetime

# Выберем дату и время...
dt = datetime(2023, 1, 1)
epoch = (dt – datetime(1970, 1, 1)).total_seconds()

print(int(epoch))  # И снова ваши руки держут "секунды" времени!

Путешествие в центр часовых поясов

Всегда используйте мировое координированное время (UTC)

Функция calendar.timegm() станет вашей правой рукой при работе с UTC-временем и его преобразовании в Unix-время:

Python
Скопировать код
import calendar
from datetime import datetime

# Получаем время в формате UTC
dt = datetime.utcnow()
epoch = calendar.timegm(dt.utctimetuple())

print(epoch)  # И наши руки вновь охватывают "секунды" времени!

Учёт локального времени

Если преобразование в Unix-время должно учитывать локальный часовой пояс, воспользуйтесь таким подходом:

Python
Скопировать код
import time
from datetime import datetime

dt = datetime.now()  # Живем здесь и сейчас!
epoch = int(time.mktime(dt.timetuple()))

print(epoch)  # Эх, время – вечная загадка!

Убедитесь, что time.mktime() учитывает ваш часовой пояс. По необходимости корректируйте время на UTC перед использованием этого метода.

Точность играет решающую роль – и это не только о механике

Микросекундная дотошность

Хотите, чтобы преобразование в Unix-время учитывало микросекунды для более точных измерений? Попробуйте так:

Python
Скопировать код
from datetime import datetime

dt = datetime.now()
epoch_with_microseconds = time.mktime(dt.timetuple()) + (dt.microsecond * 1e-6)

print(epoch_with_microseconds)  # Благодаря микросекундам мы способны на чудеса!

Визуализация

Преобразование даты и времени в Python в Unix-время можно представить на практике как магический трюк:

Markdown
Скопировать код
| Datetime (📆)        | Unix-время (🕒)   |
| -------------------- | ----------------- |
| 2023-04-01 12:00:00 | 1679860800        |

Вся магия в том, чтобы уметь переводить конкретный момент времени в числовое значение, восхищая этим окружающих: "Как это получилось?":

Markdown
Скопировать код
Начинаем отсчет: 1970-01-01 00:00:00 (начало эпохи, мы на месте! 🚦)
Трансформируем: 📆 -> 🔄 -> 🕒 (Абракадабра! Появься кролик из шляпы!)

Заметки «на полях»

Свитки мудрости Python

Не забывайте щелкать по ссылке на документацию Python по strftime, чтобы всегда быть готовым к путешествиям во времени.

Настройка часов

Будьте внимательны к системным настройкам времени, так как они могут влиять на результат преобразования в Unix-время. Нет ничего хуже для путешествий во времени, чем несоответствие часов!

Полезные материалы

  1. Обсуждение преобразования datetime Python в Unix-время на Stack Overflow — разбор преобразования datetime в Python в Unix-время.
  2. Unix-время на Википедии — подробные разъяснения о том, как и для чего используется Unix-время.
  3. Datetime — официальная документация Python — подробное описание работы с датой и временем, включая strftime() и strptime().
  4. Time — доступ к времени и его преобразования — документация модуля time в Python.
  5. Преобразование меток времени Python в datetime и обратно — детальное руководство о работе с datetime и Unix-временем.
  6. Unix Time Stamp – Конвертер эпохи — инструменты для работы с Unix-метками времени и датами.
  7. Arrow: улучшенная работа с датами и временем для Python — руководство по библиотеке Arrow, незаменимому инструменту для работы с датами и временем.