добавь к текущей дате сутки (затем возьми и получившейся даты день месяца и сравни с текущим днем месяца, если они равны, то добавь еще одну секунду, это для обслуживания лишних секунд), затем создай новую дату из дня месяца и года получившейся переменной, получишь время требуемого события.
Дальше, если хватит простого слипа, чтобы выполнить что-либо к этому моменту, вычти из этой переменной ткущее время и получишь сколько времени нужно ждать.
Не советую использовать один большой слип, надо бы такой протестировать на граничных ситуациях (в момент корректировки времени на машине от сервера времени), а раздели интервал на несколько, чем больше время ожидания, тем больше должен быть слип, а когда останется несколько секунд, то слипы можно сделать короткими (чем ближе к нужному моменту тем короче ожидание, это определит погрешность срабатывания)