Maximum time available for a timer

I am very new to Arduino, and am trying to look into a project for a friend of mine. He is wanting to have a device that will actuate a solenoid for 1-3 seconds in increments of one hour, 3 hours, 6 hours, 24 hours, and once a week. It will also need to keep up with what day it is. It will function a lot like a game feeder. Is there a way to do this using an Arduino.

A RTC (clock) will help you keep track.
It is also possible in software using the millis() function.
millis() will run for nearly 50 days before restarting at 0.

search a bit - i think there is already available software to do this 'long time' routine.