@qwwerty

Почему datetime.timestamp отнимает разницу моего часового пояса?

Добрый день, такой вопрос появился.

from datetime import datetime, timedelta
import time


# Текущее время UTC: 2020-10-27 09:39:00
# Текущее системное время (UTC+3): 2020-10-27 12:39:00


cur_datetime = datetime.now()
utc_datetime = datetime.utcfromtimestamp(time.time())

print(cur_datetime.timestamp())  # Output: 1603791540.147792 (2020-10-27 09:39:00)
print(utc_datetime.timestamp())  # Output: 1603780740.147792 (2020-10-27 06:39:00)

# Ожидал получить:

# Output: 1603802340.147792 (2020-10-27 12:39:00)
# Output: 1603791540.147792 (2020-10-27 09:39:00)

# Так как timestamp 2020-10-27 09:39:00 == 1603802340.147792
# А timestamp 2020-10-27 12:39:00 == 1603791540.147792

# Вместо этого, datetime.timestamp() отдает мне: <правильный timestamp> - timedelta(hours=3)
# То есть зачем то пытается отдать timestamp в UTC, отнимая мой часовой пояс, хотя я этого даже не просил
# (никаких аргументов функция не принимает, чтобы это как то можно было обозначить при вызове)


В теории я могу воспользоваться:
(<datetime obj> + datetime.timedelta(hours=3)).timestamp()

Но возможно есть какой-либо более адекватный метод получить timestamp datetime объекта?
Еще хотел бы узнать, если кто осведомлен, почему такая неочевидная реализация timestamp() метода?
(В документации отсылок к этому не нашел, возможно плохо искал, поправьте если что)
  • Вопрос задан
  • 144 просмотра
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
все там очевидно, а каша у тебя в голове

cur_datetime = datetime.now()
cur_timestamp = time.time()
utc_datetime = datetime.utcfromtimestamp(time.time())
dt_object = datetime.fromtimestamp(time.time())
print(cur_datetime,'|', cur_timestamp,'|', utc_datetime, '|', dt_object )
Ответ написан
Ваш ответ на вопрос

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

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