Ovulation date = LMP + (cycle length − 14) days; fertile window = ovulation date −5 to +1 days
LMP Jan 1, 28-day cycle: Ovulation = Jan 1 + 14 days = Jan 15; fertile window Jan 10–16.
The luteal phase (post-ovulation) is typically a fixed ~14 days regardless of total cycle length, so ovulation falls 14 days before the next period.
Less accurate — irregular cycles make ovulation timing harder to predict from calendar math alone.