Добрый день, такой вопрос появился.
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() метода?
(В документации отсылок к этому не нашел, возможно плохо искал, поправьте если что)