Конвертация формата времени ts в datetime, python

Хочу конвертить формат ts в datetime. Взял код из интернета, на их примерах работает. Ставлю свой ts, не работает.

Пример кода

from datetime import datetime

timestamp = 1625309472.357246
# convert to datetime
date_time = datetime.fromtimestamp(timestamp)

# convert timestamp to string in dd-mm-yyyy HH:MM:SS
str_date_time = date_time.strftime("%d-%m-%Y, %H:%M:%S")
print("Result 1:", str_date_time)

# convert timestamp to string in dd month_name, yyyy format
str_date = date_time.strftime("%d %B, %Y")
print("Result 2:", str_date)

# convert timestamp in HH:AM/PM MM:SS
str_time = date_time.strftime("%I%p %M:%S")
print("Result 3:", str_time)

Подставляю вместо timestamp свой вариант (1740631800000 - пример) уже не работает, пишет следующие

Traceback (most recent call last):
  File "C:\Users\Кирилл и Любимка\PycharmProjects\OKX_bot\first_game.py", line 5, in <module>
    date_time = datetime.fromtimestamp(timestamp)
OSError: [Errno 22] Invalid argument

Проверял свой вариант 1740631800000 в онлайн конвертере, там все четко получилось а в коде не получается. Помогите плз.


Ответы (1 шт):

Автор решения: Github Runner

Обратите внимание на комментарий документации fromtimestamp Construct a datetime from a POSIX timestamp

В качестве аргумента он принимает POSIX метку. Обращаясь к Википедии:

Определяется как количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года

Вы же вводите количество миллисекунд.

Ответ: поделите ваше число на 1000.

import datetime

timestamp = 1740631800000

dt = datetime.datetime.fromtimestamp(timestamp / 1000)
print(dt)
→ Ссылка