Как использовать метод 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, и дальше просто планировать что делать.