Can my Arduino be a clock?

To combat the rollover you have another variable which you put millis() in every time you use it.
The you compare the current millis() to the stored variable. If its smaller then you work out (4294967296 - stored_millis) + current_millis to compensate.