Datetime Python добавляет почти целый дополнительный час [дубликат]Python

Программы на Python
Гость
Datetime Python добавляет почти целый дополнительный час [дубликат]

Сообщение Гость »


Я пишу простого бота Discord на Python, который преобразует дату и время в часовой пояс пользователя. При этом будет использоваться собственная функция преобразования времени Discord, принимая время в секундах и отображая его в правильное для пользователя время.
Я написал функцию на Python, которая принимает строку и анализирует ее для получения найдите любые даты и время, получите языковой стандарт пользователя и используйте его для получения объекта datetime. Отсюда я могу использовать метод timestamp() объекта datetime для возврата секунд. Здесь я сталкиваюсь с проблемами. Для моего местного часового пояса (Австралия/Сидней) я вижу, что ко времени 16:00 добавляется 55 минут. Если я оставлю время, но переключусь на Америку/Нью-Йорк, я увижу добавленное 56 минут.

Код: Выделить всё

datetime(2024, 3, 14, 16, 0, 0, 0, pytz.timezone('Australia/Sydney')).timestamp()
> 1710395700.0

Код: Выделить всё

import pytz
from datetime import datetime

datetime(2024, 3, 14, 16, 0, 0, 0, pytz.timezone('Australia/Sydney')).timestamp()
# 1710395700.0
Я использовал JavaScript, чтобы убедиться, что этот часовой пояс работает, поскольку его использует Discord. Мне пришлось умножить на 1000, поскольку JavaScript принимает миллисекунды.

Код: Выделить всё

new Date(1710395700000)
// Thu Mar 14 2024 16:55:00 GMT+1100 (Australian Eastern Daylight Time)
Вы видите, что добавлено 55 минут. Если вы опубликуете в канал Discord, вы получите тот же результат.
Как я уже говорил ранее, это происходит и для других часовых поясов, но с другими суммы Нью-Йорк добавляет 56 минут. Из-за этого я не могу просто вычесть постоянное значение.

Код: Выделить всё

datetime(2024, 3, 14, 16, 0, 0, 0, pytz.timezone('America/New_York')).timestamp()
# 1710449760.0

Код: Выделить всё

new Date(1710449760000)
// Fri Mar 15 2024 07:56:00 GMT+1100 (Australian Eastern Daylight Time)
What is happening here? Is this an issue with the timestamp() method in the datetime library or is JavaScript not interpreting it correctly? What is the correct way to get the timestamp I want?


Источник: https://stackoverflow.com/questions/781 ... extra-hour

Вернуться в «Python»