I recently wrote a timer library to do just what you need.
It handles millis() roll-over and just sets a bit when it has counted the time you specified.
I mention it only because I am very new to Arduino and the library uses the simplest of code and is verbosely commented.
There is no clever in-depth C and no interrupts.
I am not suggesting that this code id anything special or clever but it is useful, simple, and taught me a great deal when I built it.
I will be happy to send you the code, which you could easily use outside a library, if you would like to play with it.
Al