QlockTwo remake

There may be a problem with that code because it updates the time using a timer interrupt and if this occurs in the middle of your displaytime routine, the relationship between hours, minutes and seconds can be broken. You can fix this by disabling interrupts when accessing the time variables that can be changed in your interrupt handler. But why not replace your interrupt handler with a call to millis().

Something like this code in your loop function:

unsigned long prevMillis;

void loop() {
  while( millis() - prevMillis >= 1000){      
    prevMillis += 1000;      
    ss++;
    if (ss==60) {
      ss=0;
      mm++;
      if (mm==60) {
        mm=0;
        hh++;
        if (hh==24) 
          hh=0;
      }
    }
  }
  // rest of loop code here... 
}