- Period Timer - usually counts down from 30:00 (or 20:00 for many home/exhibition bouts)
- Jam Timer - usually counts down, from 2:00
- Lineup Timer - usually counts up, potentially starting the jam when it hit a 0:30 second threshold (or possibly starting a timeout)
- Timeout Timer - Counts up, with no limit (though after 1:00, a team timeout should switch to an official time out)
- Intermission Timer - Counts down, somethings counting down until a specific time ("13:12 Until Derby"), sometimes until the next period is ready to start
What's more, the actual value of these timers can be derived from DerbyXML timestamp entries. We consider an element to be "active" if it has a starting timestamp but not a closing one.
- The wall clock time of the start of the period is recorded, the current period clock is based on that less the duration of any time outs. The period clock is running if there isn't an active timeout element.
- The current jam elapsed time starts when the jam is started (which, if it is a period clock, can be readily converted to wall clock time). The jam timer is running if the most recent jam element is active (we need to ignore possible additional jam elements that are after the currently active jam, which may be entered because we may know that a skater may still have pending penalty time, so automatically enter a lineup element for them)
- The lineup timer is based on the end of the last jam. If the period element is active, but there are no active jam elements, and not active timeout elements, we have a running lineup timer
- A timeout timer starts when a time out event is created, and that starting timestamp determines the time. Active timeout element, running timeout clock
- Intermission timer can be based on the end of the last jam (which is the end of the last period). We could be "smart" and determine if there is an intermission, or a countdown based on the number of active period elements.
Timers can also be used to manage the penalty box. Penalty timers would count down, normally from 1:00 and would be active with the enter-box element, and be "closed" at the corresponding exit-box element. The time, of course, would be started/stopped with the jam timer, but can easily be derived.
These timers, however, could be optionally transmitted to support simpler client that don't have backend DerbyXML support