🛠️ToolsShed

Calculadora de Ciclo Menstrual

Predice la próxima menstruación, la ovulación y la ventana fértil.

Una calculadora menstrual te ayuda a predecir tus próximas fechas de menstruación, el período fértil y el día de ovulación en función de la duración de tu ciclo y la fecha de inicio de tu último período. La mayoría de los ciclos menstruales duran entre 21 y 35 días, con una media comúnmente citada de 28 días, aunque cada persona tiene su propio ritmo.

Para usar la calculadora, introduce la fecha de inicio de tu última menstruación y la duración media de tu ciclo. La herramienta predecirá tu próxima menstruación, el día estimado de ovulación (normalmente alrededor del día 14 en un ciclo de 28 días) y tu ventana fértil, los días en que la probabilidad de embarazo es mayor. También puedes ver varios ciclos futuros a la vez.

Aunque esta calculadora menstrual ofrece estimaciones útiles para planificar y tomar conciencia de tu ciclo, la duración puede variar por estrés, enfermedad, ejercicio o cambios hormonales. Para decisiones médicas relacionadas con fertilidad o anticoncepción, consulta a un profesional de la salud.

Preguntas Frecuentes

Implementación de Código

from datetime import date, timedelta

def menstrual_cycle(last_period: date, cycle_length: int = 28, period_length: int = 5) -> dict:
    """
    Predict next period and fertile window based on cycle data.
    Ovulation assumed at cycle_length - 14 days (luteal phase = 14 days).
    """
    ovulation_day = cycle_length - 14
    next_period = last_period + timedelta(days=cycle_length)
    ovulation_date = last_period + timedelta(days=ovulation_day)
    fertile_start = ovulation_date - timedelta(days=5)
    fertile_end = ovulation_date

    return {
        "last_period":    last_period.strftime("%Y-%m-%d"),
        "next_period":    next_period.strftime("%Y-%m-%d"),
        "ovulation_date": ovulation_date.strftime("%Y-%m-%d"),
        "fertile_window": f"{fertile_start.strftime('%Y-%m-%d')} to {fertile_end.strftime('%Y-%m-%d')}",
        "period_ends":    (last_period + timedelta(days=period_length - 1)).strftime("%Y-%m-%d"),
    }

result = menstrual_cycle(date(2025, 3, 1), cycle_length=28, period_length=5)
print(f"Last Period    : {result['last_period']}")
print(f"Period Ends    : {result['period_ends']}")
print(f"Fertile Window : {result['fertile_window']}")
print(f"Ovulation      : {result['ovulation_date']}")
print(f"Next Period    : {result['next_period']}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.