- ОБНОВЛЕНИЕ -
хорошо, это то, что я понял до сих пор.
для события, которое должно проходить, скажем, раз в две недели, это то, что я сделал.
- конвертировать метку времени по расписанию и текущую метку времени в unix time
- (schduleTime - currentTime)% 14 // 14, потому что через 2 недели это может быть любое число
- это скажет мне, если сегодня две недели с момента последнего запуска мероприятия.
для и событие, которое должно выполняться каждые x месяцев или лет
Есть некоторые другие проверки, которые необходимо выполнить, прежде чем перейти к фактическим вычислениям
например, чтобы убедиться, что сейчас самое подходящее время ... и т.д.
- убедитесь, что сегодня та же дата, что и в щ
- если дата верна, то "(ScheduelMonth - currentMonth)% 2" скажем, что она должна запускаться каждые 2 месяца
простой пример
отметка времени начала события 2010 - 11 - 23 каждые 3 месяца
теперь давайте представим, что сегодняшняя дата 2011 - 02 - 23
тогда расчеты будут выглядеть следующим образом.
if (Sch_Date == Current_Data) // if (23 == 23)
if (! ((Sch_Month - Current_Month)% 3)) // if (! ((11-2)% 3) // что равно нулю
Надеюсь, в этом есть смысл, дайте мне знать, если я что-то упустил
1
Привет,
Я программирую микро STM32, и мне нужно создать механизм планирования, который позволит пользователю планировать выполнение задач в заданные промежутки времени.
У меня есть RTC, который предоставит мне текущую метку времени. Часть, в которой я застреваю - это как справляться с повторяющимися событиями.
т.
, если пользователь хочет, чтобы что-то запускалось каждую пятницу, но еженедельно, раз в две недели, ежемесячно или ежегодно.
пользователь предоставляет мне время начала и окончания и повторяющийся флаг, который говорит мне, в какие дни он хочет, чтобы это запускалось и как часто.
Надеюсь, я прояснил это достаточно.
Если у вас есть идеи и / или вопросы, мы будем благодарны
Обновление
Это моя конкретная проблема.
У меня есть устройство, проверяющее время от времени, чтобы увидеть, должна ли какая-либо из записей в расписании запускаться. Я думаю, что лучший способ описать это своим примером
пользователь отправляет это событие
время начала
2010 11 09 Вт 16 30 00
время окончания
2012 11 09
повторяющиеся флаги каждый вторник каждые две недели
Я могу проверить, готово ли событие к запуску, но как мне справиться с тем фактом, что оно должно происходить только каждые две недели, мне нужна помощь в кодировании алгоритма для обработки рекурсии