For the length of time you need (a very long time for the AVR processors), the easiest way to do this is as already suggested, but here is an explanation of the logic behind how it is done.
The loop() function is called continuously - conceptually once it is completed it starts again. What you need to do is remember when you need to do something (like a calendar entry reminds you to go somewhere or be at a meeting, for eacmple) but in the case of Arduino thge 'next' time is simply when the millis() function returns a value that is greater than or equal to the target time (appointment) that you set earlier.
Interrupts are meant for situations where your code has to react NOW to fast inputs and has to do something about it. As PaulS pointed out, polling is all that is required in this case and CrossRoads has prety much set up the code needed.
The key for all this, btw, is not to create delays in the code (using the useful but misused delay() function) but keep running as fast as possible so you can get to everything in time. Multitasking is all about juggling the balls at the same time and you do this by knowing when you need to eecute something next or be fast enough to respond to an input when it happens.