I think it would be easier if you set the timer every, say, a minute, and this timer can check the system clock, when the desired time is less than or equal to the system time, you can simply run actions (in this example, with a 1 minute maximun error )
You can improve it if you make the dinamyc timer interval, for example, if you check the time and still have half an hour left, you can set the interval for 15 minutes, reduce the nex time to 5 minutes, and so on, you check the clock once per second, eg.
NTN
source share