I do it similar to what Caltoa is saying. I just did a temperature monitor, logger with LCD display and it's programmed so that loop() mostly does nothing but keep checking if it should do anything. Some items rely on millis for timing and some rely on seconds. As it has an RTC and uses time.h I use the now() function just like millis(). In my sketch the busiest thing loop() does is turn the colon in the time display on or off every one second.