Я пишу простого бота 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
Код: Выделить всё
new Date(1710395700000)
// Thu Mar 14 2024 16:55:00 GMT+1100 (Australian Eastern Daylight Time)
Как я уже говорил ранее, это происходит и для других часовых поясов, но с другими суммы Нью-Йорк добавляет 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)
Источник: https://stackoverflow.com/questions/781 ... extra-hour