Думаю делать так: сделать базу по времени, в которое нужно дать напоминание. Далее для каждого раз в год добавлять то, что будет в этом году, раз месяц, что в этом месяце, раз в неделю, что в эту неделю и так далее. Ну а после, раз в 15 минут смотреть, есть ли что-то новое.