Non ho ancora guardato il codice (sai che sono un "meccanico", non un programmatore :D) ... gli daro' un'occhiata stasera ... ma cosi ad occhio, direi che il modo piu semplice sia fare delle funzioni che visualizzano le varie cose (esempio, una per l'ora, una per la data, e cosi via), e poi nel loop richiamarle con degli if temporizzati ed una flag ... tipo, molto grossolanamente:
nel setup, fra le altre cose, imposto la flag al valore iniziale 0 ... e la variabile del tempo precedente a millis() ...
se nel loop premo qualche pulsante per impostare data/ora/ecc, metto la flag (ad esempio) al valore 9 ... poi ...
se la flag e' a 0 e non sono ancora trascorsi 30 secondi, chiamo la funzione ore ... quando i 30 secondi sono trascorsi, metto la flag a 1 e resetto la variabile del tempo precedente a millis() ...
se la flag e' ad 1 e non sono ancora trascorsi 5 secondi, chiamo la funzione data, quando i 5 secondi sono trascorsi, metto la flag a 2 e resetto la variabile del tempo precedente a millis() ...
se la flag e' a 2 e non sono ancora trascorsi i 5 secondi, chiamo la funzione temperatura, se i 5 secondi sono trascorsi metto la flag a 0 e resetto la variabile del tempo precedente a millis() ... (solo se si vuole anche la temperatura) ...
se la flag vale 9 (vuol dire che ho premuto qualche pulsante per fare delle variazioni), chiamo la funzione imposta data/ora/ecc ... in questa funzione rimetto la flag a 0 solo quando ho finito e ne esco ...
... e cosi via ... in questo modo hai una struttura relativamente flessibile, dove per fare qualche altra modifica, bastera' aggiungere (o modificare) una o piu funzioni, ed inserire le relative chiamate se le avrai aggiunte, senza stravolgere l'intero sketch ...