вызов, например, datetime(2019, 3, 31, 0, 0, 0).timestamp()
, даст вам метку времени, локализованную в часовом поясе вашего компьютера, поскольку объект datetime не знает ни о каком часовом поясе («наивный»; см. документы ). По-видимому, вы находитесь в часовом поясе с изменением летнего времени на эту дату.
Если вы установите часовой пояс, например, в UT C (без перехода на летнее время), вы получите ожидаемый результат:
from datetime import datetime, timezone
t1 = datetime(2019, 3, 31, 0, 0, 0, tzinfo=timezone.utc).timestamp()
t2 = datetime(2019, 4, 1, 0, 0, 0, tzinfo=timezone.utc).timestamp()
dt = t2-t1
print(f"dt = {dt} seconds.")
# dt = 86400.0 seconds.