Как использовать метод isoweekday в библиотеке datetime для определения дня недели указанной даты?

Как использовать метод isoweekday в модуле datetime для отправки уведомлений в определенные дни недели и время? Сейчас у меня есть код, который работает для конкретного времени, но как я могу изменить его, чтобы уведомление отправлялось каждый понедельник в 15:00, используя метод isoweekday? Я понимаю, что есть разница между использованием weekday и isoweekday, но не совсем понимаю, почему один начинается с 0, а другой с 1.
  • 15 мая 2024 г. 16:40
Ответы на вопрос 2
Метод isoweekday() в библиотеке datetime используется для определения дня недели указанной даты в виде числа от 1 (понедельник) до 7 (воскресенье).

Чтобы отправлять уведомления каждый понедельник в 15:00, можно использовать метод isoweekday() вместе с проверкой времени. Ниже приведен пример кода, который демонстрирует это:

```python
from datetime import datetime
import time

def send_notification():
    current_time = datetime.now()
    
    if current_time.isoweekday() == 1 and current_time.hour == 15 and current_time.minute == 0:
        # отправка уведомления
        print("Отправка уведомления")

while True:
    send_notification()
    time.sleep(60)  # проверка каждую минуту
```

В этом примере функция send_notification() будет вызываться каждую минуту, и если текущее время соответствует понедельнику (1) и времени 15:00, то будет отправлено уведомление. 

Метод isoweekday() начинается с 1 для понедельника (по стандарту ISO), в то время как метод weekday() начинается с 0 для понедельника (в Python). Таким образом, для определения дня недели в виде числа от 0 (понедельник) до 6 (воскресенье), лучше использовать метод weekday(), а для работы с ISO днями недели - isoweekday().
dt_string = now.strftime("%d/%m/%Y %H:%M:%S")   # метка времени вида дд/мм/гггг чч:мм:сс
if (dt_string == "19:04:00") and x == 6:  # ВНЕЗАПНО метка времени вида чч:мм:сс, дата куда-то пропала

Что ты ожидал-то? =)

А вообще, aioschedule в помощь, если у тебя будет несколько таких напоминашек.
Там достаточно один раз наладить запуск рабочего цикла aioschedule, и дальше просто планировать что делать.
Похожие вопросы