Turn on and off a light at a specific hour

Millis() will drift over time. Why don't you want to use a real RTC? There are alternatives, but they'll probably end up costing more.