Как правильно конвертировать UTC в эпоху в Python
Быстрый ответ
Желаете преобразовать объект datetime
в секунды Unix-эпохи? Воспользуйтесь следующим небольшим фрагментом кода:
from datetime import datetime
# Задайте интересующую вас дату и время
dt = datetime(2023, 1, 1)
epoch = int(dt.timestamp())
print(epoch) # Теперь у вас в руках "секунды" времени!
Метод timestamp()
вашего объекта datetime
позволит получить время в формате эпохи. Не забудьте только передать свою переменную вместо dt
.
Путеводитель по Python: версия 3.3 или старше
Если вы используете версию Python ниже 3.3 и у вас отсутствует метод datetime.timestamp()
, количество секунд с момента начала Unix-эпохи можно расчитать следующим образом:
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-время:
import calendar
from datetime import datetime
# Получаем время в формате UTC
dt = datetime.utcnow()
epoch = calendar.timegm(dt.utctimetuple())
print(epoch) # И наши руки вновь охватывают "секунды" времени!
Учёт локального времени
Если преобразование в Unix-время должно учитывать локальный часовой пояс, воспользуйтесь таким подходом:
import time
from datetime import datetime
dt = datetime.now() # Живем здесь и сейчас!
epoch = int(time.mktime(dt.timetuple()))
print(epoch) # Эх, время – вечная загадка!
Убедитесь, что time.mktime()
учитывает ваш часовой пояс. По необходимости корректируйте время на UTC перед использованием этого метода.
Точность играет решающую роль – и это не только о механике
Микросекундная дотошность
Хотите, чтобы преобразование в Unix-время учитывало микросекунды для более точных измерений? Попробуйте так:
from datetime import datetime
dt = datetime.now()
epoch_with_microseconds = time.mktime(dt.timetuple()) + (dt.microsecond * 1e-6)
print(epoch_with_microseconds) # Благодаря микросекундам мы способны на чудеса!
Визуализация
Преобразование даты и времени в Python в Unix-время можно представить на практике как магический трюк:
| Datetime (📆) | Unix-время (🕒) |
| -------------------- | ----------------- |
| 2023-04-01 12:00:00 | 1679860800 |
Вся магия в том, чтобы уметь переводить конкретный момент времени в числовое значение, восхищая этим окружающих: "Как это получилось?":
Начинаем отсчет: 1970-01-01 00:00:00 (начало эпохи, мы на месте! 🚦)
Трансформируем: 📆 -> 🔄 -> 🕒 (Абракадабра! Появься кролик из шляпы!)
Заметки «на полях»
Свитки мудрости Python
Не забывайте щелкать по ссылке на документацию Python по strftime
, чтобы всегда быть готовым к путешествиям во времени.
Настройка часов
Будьте внимательны к системным настройкам времени, так как они могут влиять на результат преобразования в Unix-время. Нет ничего хуже для путешествий во времени, чем несоответствие часов!
Полезные материалы
- Обсуждение преобразования datetime Python в Unix-время на Stack Overflow — разбор преобразования datetime в Python в Unix-время.
- Unix-время на Википедии — подробные разъяснения о том, как и для чего используется Unix-время.
- Datetime — официальная документация Python — подробное описание работы с датой и временем, включая strftime() и strptime().
- Time — доступ к времени и его преобразования — документация модуля time в Python.
- Преобразование меток времени Python в datetime и обратно — детальное руководство о работе с datetime и Unix-временем.
- Unix Time Stamp – Конвертер эпохи — инструменты для работы с Unix-метками времени и датами.
- Arrow: улучшенная работа с датами и временем для Python — руководство по библиотеке Arrow, незаменимому инструменту для работы с датами и временем.