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.