In general, the server time increments by 1 on every simulator cycle. However, there are occasions (after goals and after offsides calls) during which the simulator clock stops. If your clients base their behaviors on time in any way (e.g. sending a sense_body command every 10 cycles), they may become confused when the server time stops.
One possible solution is to represent time as an ordered pair (t,s) where t is the server time and s is the number of cycles since the clock has stopped. When the clock is moving, s is always 0. Thus, t always matches the server time, but with appropriate arithmetic functions defined, agents can still reason about the number of simulator cycles between events.
For an example of such an implemented time structure, see the CMUnited-98 source code available at http://www.cs.cmu.edu/E pstone/RoboCup/CMUnited98-sim.html.