If I am understanding your question right, while the user is logged in and playing, time moves in normal, real-time fashion. If that is the case, you could rely on a wrapped time source where you can manipulate the current reference point in time.
I know your question specifically mentions Flash and my code example here is in Java, but I believe it should be easily adaptable for your needs:
public class TimeSource {
private static Long staticStart = System.currentTimeMillis();
private static Long fixPoint = System.currentTimeMillis();
public static void setCurrentTimeMillis(Long currentTimeMillis) {
staticStart = System.currentTimeMillis();
fixPoint = currentTimeMillis;
}
public static Long getCurrentTimeMillis() {
Long offset = System.currentTimeMillis() - staticStart;
return fixPoint + offset;
}
}
Basically when the application starts up, we initialize to the current time in millis. However, if we set an alternate time as our "current" then the offset is calculated and used to generate the time whenever it is requested.
In the case of your game, you can set the current time to 0 when the game is very first initialized for a new user. Then, time will proceed as normal during play. When the user ends their session, you can store the current game time and restore that when the user logs in again.
Now all of your elapsed time logic can be based just on in-game time.