dherz is close but off by 1 day (and it's a crucial 1 day). The ML schedule starts 2 cycles ahead of the AAA schedule, so if you promoted after 21 ML cycles (days), that would be 19 AAA cycles (days).
Here's the language about how it actually works (from Admin Office > Help > FAQ, then scroll down to "Players"):
"...Each day a player is on the big league roster during the regular season (even if he's on the DL), he accrues a day of service. In addition, we track the # of days a player is on optional assignment on a minor league team. If a player is on optional assignment less than 20 days during the season, this total is added to his big league service time. At the end of the season, if a player has 172 days or more (including any optional service days < 20), he is given a year of big league experience. If not, the days roll over into the next season. These years are what dictate arbitration eligibility and free-agent eligibility.
It is important to note that a player registers days on optional assignment only after the minor league schedule has begun. There is typically a 1 or 2 HBD day difference between when the big league schedule starts and when the minor league schedule starts."
So...20 days in the minors, THEN you're OK to promote and you won't accrue a year of ML service time. I have no idea why the language above says there is "typically a 1 or 2 HBD day difference between when the big league schedule starts and when the minor league schedule starts." Maybe it varies, but EVERY time I've looked at it there's a 2 day difference. In any event, count the MINOR LEAGUE DAYS...when you get to 20, you're good.