Menstrual Cycle Calculator
Predict your next period and fertile window based on cycle length and last period date.
Kalkulator siklus menstruasi membantu memprediksi tanggal menstruasi berikutnya, jendela subur, dan hari ovulasi berdasarkan panjang siklus rata-rata dan tanggal mulai menstruasi terakhir. Sebagian besar siklus menstruasi berlangsung antara 21 hingga 35 hari, dengan rata-rata yang sering disebutkan adalah 28 hari — meskipun setiap orang memiliki polanya sendiri.
Untuk menggunakan kalkulator, masukkan tanggal mulai menstruasi terakhir dan panjang siklus rata-rata. Alat ini akan memprediksi tanggal menstruasi berikutnya, perkiraan hari ovulasi (biasanya sekitar hari ke-14 dalam siklus 28 hari), dan jendela subur Anda. Anda juga bisa melihat beberapa siklus ke depan sekaligus.
Meskipun kalkulator ini memberikan perkiraan yang berguna untuk perencanaan, panjang siklus dapat berubah karena stres, sakit, olahraga, atau perubahan hormonal. Untuk keputusan medis terkait kesuburan atau kontrasepsi, konsultasikan dengan tenaga medis.
Pertanyaan yang Sering Diajukan
Implementasi Kode
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.