Как преобразовать объект `datetime` в строку с временной меткой UNIX?

Преобразовать объект datetime в строку с временной меткой UNIX (timestamp) можно следующим образом:
import datetime
import time

dt_object = datetime.datetime.now()
timestamp = time.mktime(dt_object.timetuple())
timestamp_str = str(int(timestamp)) # Преобразуем в строку
  
Или используя метод .timestamp(), доступный в Python 3.3 и новее:
import datetime

dt_object = datetime.datetime.now()
timestamp = dt_object.timestamp()
timestamp_str = str(int(timestamp)) # Преобразуем в строку
  

Преобразование объекта datetime в строку с временной меткой UNIX (timestamp) в Python можно выполнить несколькими способами. Самый распространенный и рекомендуемый способ - использование метода timestamp() объекта datetime.

Вот пример кода, демонстрирующий преобразование:


    import datetime
    import time

    # Получаем текущее время (пример datetime объекта)
    datetime_object = datetime.datetime.now()

    # Преобразуем datetime объект в timestamp (число с плавающей точкой)
    timestamp = datetime_object.timestamp()

    # Преобразуем timestamp в целое число (для представления UNIX timestamp)
    timestamp_int = int(timestamp)

    # Преобразуем timestamp в строку
    timestamp_str = str(timestamp_int)


    print(f"Datetime объект: {datetime_object}")
    print(f"Timestamp (float): {timestamp}")
    print(f"Timestamp (int): {timestamp_int}")
    print(f"Timestamp (str): {timestamp_str}") #Это нужная строка

  

Разъяснение:

  • datetime.datetime.now() создает объект datetime, представляющий текущее время.
  • datetime_object.timestamp() возвращает timestamp, как число с плавающей точкой (float), представляющее количество секунд, прошедших с начала эпохи (Unix epoch - 1 января 1970 года 00:00:00 UTC).
  • int(timestamp) преобразует timestamp (float) в целое число, отбрасывая дробную часть, что обычно требуется для стандартного представления UNIX timestamp.
  • str(timestamp_int) преобразует timestamp (int) в строку, которая и является итоговым результатом.

Альтернативный способ (использование time модуля):


    import datetime
    import time

    datetime_object = datetime.datetime.now()

    # Преобразуем datetime объект в tuple (структуру времени)
    time_tuple = datetime_object.timetuple()

    # Преобразуем tuple в timestamp
    timestamp = time.mktime(time_tuple)

    #Преобразуем timestamp в int и затем в строку
    timestamp_int = int(timestamp)
    timestamp_str = str(timestamp_int)

    print(f"Timestamp (using time module): {timestamp_str}")

  

Этот метод менее предпочтителен, чем первый, так как он более сложный и менее читаемый. Использование time.mktime() может быть полезно, если у вас есть datetime объект без информации о часовом поясе и вам нужно преобразовать его в timestamp, предполагая локальное время.

Важно:

  • Убедитесь, что ваш объект datetime содержит информацию о часовом поясе, если это необходимо. Если нет, то timestamp будет интерпретирован как локальное время. Если объект имеет информацию о часовом поясе (например, получен с использованием datetime.datetime.now(datetime.timezone.utc)), timestamp будет в UTC.
  • Результат timestamp() всегда в UTC.
0