0ralo
@0ralo
Python backend developer

Почему datetime.fromtimestamp приводит UTC в локальный naive?

Сегодня разбирался с datetime.fromtimestamp() и обнаружил странное поведение
>>> datetime.datetime.fromtimestamp(1724137892)
datetime.datetime(2024, 8, 20, 10, 11, 32)

Время (аргумент функции) - UTC epoch. Почему питоновская функция добавила(именно добавила) 3 часа к моему времени? Да я нахожусь в MSK+3, почему он тогда добавил +3 и оставил naive? Он же по факту изменил данные. Если сменить часовой пояс на пк, то и вывод функции изменится.
3 случая приемлемы по моему мнению
  • Привести в UTC и оставить naive
  • Привести в UTC и сделать aware (UTC)
  • Привести к локальному и сделать aware(local timezone)

Почему же он выбрал самый неправильный способ?

P.S. Если явно передавать временную зону, то применяя ее рассчитывается все правильно, я спрашиваю именно про вызов функции с 1 аргументом
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@Everything_is_bad
Ну почему сначала не почитать доки, а не бежать сюда, там же явно пишут что "return the local date" https://docs.python.org/3/library/datetime.html#da... и там же явно пишут что есть utcfromtimestamp
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@DDV23
Биокибернетик
Функция использует локальное время системы. Тут надо datetime.utcfromtimestamp() и не мучить с одним аргументом datetime.fromtimestamp() :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы