I appear to have stirred a bit of a hornets nest, to which I apologise.
The reason that I wanted to be able to reset millis() is that I the circuit is running long term, it needs to have an awareness of time but not of "when" it is, just that time has happened. A bit like a stop watch, it is able to tell you the duration of an event, but not the time it started and finished.
You don't reset your watch to midnight every time you want to boil an egg.
No, but you do reset an egg timer every time you want to boil an egg. There is a difference between telling the time and recording what time has passed. A watch is good for telling you when
you are in relation to our passage round the Sun (or the Earth's rotation for a 24 hour clock), and ensuring everyone is synced up. A timer is more about how much time has passed since it was arbitrarily started/reset, the actual
time it was started and stopped is irrelevant. To continue that analogy; you don't wait for a stopwatch to roll over to zero before starting the next 100 meter race.
That is the sort of functionality I feel the millis() should be providing. If I want a clock I'll connect up to an IC that gives me time and date (and to a greater accuracy then millis() can provide), all millis() needs to do is provide a reasonable sense of
time, not the
time. When you only need to worry about small durations of time (minutes at best) having to program in extra to deal with roll-overs is just a PITA, when all I really want is to reset my stopwatch.