In dealing with time in an application – sometimes it’s extremely straightforward, and sometimes it’s a little more complicated than it seems. Take elapsed time, for example. For shorter time frames, we can simply use a timer – but for longer time frames that doesn’t always work. And what if we want to know how long a controller has been powered down? We can’t use a timer if the controller isn’t even powered on to run it.