Есть ли способ представить разницу во времени в Python, которая различает «1 день» и «24 часа»?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ представить разницу во времени в Python, которая различает «1 день» и «24 часа»?

Сообщение Anonymous »

Сейчас я работаю над проектом бота для напоминаний, который поддерживает повторяющиеся напоминания. Например, пользователь может указать, что напоминание должно повторяться с интервалом «3 дня», «12 часов», «2 недели» и т. д. В частности, следует обработать два случая:
  • Интервалы «1 день», когда напоминание на 15:00 будет повторяться каждый день в 15:00, даже при переходе на летнее время
  • Интервалы «24 часа», при которых напоминание о 15:00 будет повторяться ровно через 24 часа. В часовом поясе, где происходит переход на летнее время, это может произойти в 14:00 или 16:00.
В большинстве случаев эти два значения эквивалентны, но, как указано в часовых поясах. с переходом на летнее время есть важное различие.
Вот пример кода того, что я хочу сделать, используя встроенный объект timedelta:

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

from datetime import datetime, timedelta
from zoneinfo import ZoneInfo

# 2024-10-05 18:00:00+10:00
# Note: Australia/Sydney begins DST on Oct 6, offset going from +10 to +11
dt = datetime(2024, 10, 5, 18, tzinfo=ZoneInfo("Australia/Sydney"))

# Expected: 2024-10-06 18:00:00+11:00 (still 6pm, but with the new DST offset)
print(dt + timedelta(days=1))

# Expected: 2024-10-06 19:00:00+11:00 (exactly 24 hours later)
print(dt + timedelta(hours=24))
Однако это, похоже, не работает, поскольку нормализует часы=24 до дней=1, и поэтому эти две строки эквивалентны. До сих пор мне не удалось найти объект Python, который мог бы представлять эти интервалы отдельно. относительная дельта из dateutil, а также Timedelta из pandas имеют такое нормализующее поведение.
Существует ли обходной путь или библиотека, которая Я могу использовать для этого?

Подробнее здесь: https://stackoverflow.com/questions/789 ... -between-1
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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