Как использовать метод isoweekday в модуле datetime для отправки уведомлений в определенные дни недели и время? Сейчас у меня есть код, который работает для конкретного времени, но как я могу изменить его, чтобы уведомление отправлялось каждый понедельник в 15:00, используя метод isoweekday? Я понимаю, что есть разница между использованием weekday и isoweekday, но не совсем понимаю, почему один начинается с 0, а другой с 1.
Метод 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, и дальше просто планировать что делать.