... and if I'm not mistaken your time tracking code could be simplified (and more readable in my opinion) with -
// static variables are initialized once and keep their values between function calls
// set up a local variable to hold the last time we moved forward one second
static unsigned long lastTick = 0UL;
if ( (millis() - lastTick) >= 1000UL )
{
lastTick = millis();
if ( 0 == (second = ((++second) % 60)) )
{
if ( 0 == (minute = ((++minute) % 60)) )
{
hour = ((++hour) % 24);
}
}
}