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