Конвертация Epoch времени в формат MySQL: как решить ошибку

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

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

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

Для преобразования времени, выраженного в секундах с начала эпохи (данной в Unix-формате), в объект datetime в Python можно использовать функцию datetime.fromtimestamp():

Python
Скопировать код
from datetime import datetime
print(datetime.fromtimestamp(1633072800))  # Выводит соответствующий объект datetime
Кинга Идем в IT: пошаговый план для смены профессии

Учет часовых поясов

При работе со временем, выраженным в Unix-формате, необходимо учитывать часовые пояса. Чтобы преобразовать такое время в UTC, используйте функцию utcfromtimestamp():

Python
Скопировать код
from datetime import datetime
print(datetime.utcfromtimestamp(1633072800))  # Выводит время в формате UTC

Для исключения ошибки TypeError, убедитесь, что в качестве аргумента передается целое число или число с плавающей точкой:

Python
Скопировать код
epoch_time = float('1633072800')
print(datetime.fromtimestamp(epoch_time))  # Исключено возникновение ошибки TypeError

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

Рассмотрите Unix-время как загадочный код:

Python
Скопировать код
import datetime
epoch_time = 1631021642  # Время, представленное в Unix-формате

Преобразуйте его в понятный формат:

Python
Скопировать код
human_time = datetime.datetime.fromtimestamp(epoch_time).strftime('%Y-%m-%d %H:%M:%S')

И вуаля, тайна раскрыта:

Markdown
Скопировать код
⏳ Unix-время (1631021642) ➡️ 📅 Datetime (2021-09-07 14:27:22)

Форматирование даты и времени

Если вы хотите представить дату и время в собственном формате, используйте метод strftime:

Python
Скопировать код
formatted_time = datetime.fromtimestamp(epoch_time).strftime('%d/%m/%Y %I:%M:%S %p')
print(formatted_time)  # Печатает текущее форматированное datetime

Очистка входных данных

Важно помнить, что функция fromtimestamp() требовательна к типам входных данных. Убедитесь, что вы передаете целое число или число с плавающей точкой:

Python
Скопировать код
epoch_time = float('1633072800')
human_time = datetime.fromtimestamp(epoch_time)  # Никаких ошибок TypeError

Работа с MySQL

Для преобразования Unix-времени в формат, приемлемый в MySQL, используйте функцию FROM_UNIXTIME:

mysql
Скопировать код
SELECT FROM_UNIXTIME(1633072800);  # Выводит время в SQL

Если вам нужно только время (часы) из Unix-времени, воспользуйтесь следующим кодом на Python:

Python
Скопировать код
import time
hour = time.gmtime(epoch_time).tm_hour
print(hour)  # Выводит значение часов

Получение текущего времени в Unix-формате

Текущее время, выраженное в Unix-формате, можно получить с помощью метода time() библиотеки time:

Python
Скопировать код
import time
current_epoch_time = time.time()
print(current_epoch_time)  # Печатает текущее время в Unix-формате

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

  1. datetime — официальная документация Python
  2. Преобразование Unix-времени в читаемый формат на Python – Stack Overflow
  3. Конвертер Unix-времени
  4. Arrow: Улучшенная библиотека для работы с датами и временем в Python
  5. pandas.to_datetime — документация pandas 2.2.0
  6. Unix-время – Википедия