Aller au contenu
🛠️ToolsShed

Calculateur de Cycles de Sommeil

Calcule les heures optimales de sommeil et de réveil basées sur des cycles de 90 minutes.

À propos de cet outil

La Calculatrice de Cycle de Sommeil vous aide à comprendre et à optimiser votre architecture naturelle du sommeil en travaillant avec des cycles de 90 minutes. Les cycles de sommeil sont le rythme naturel du corps, passant par le sommeil léger, le sommeil profond et le sommeil paradoxal (sommeil du rêve) avant de se répéter. Vous réveiller à la fin d'un cycle complet vous laisse rafraîchi, tandis que vous réveiller au milieu d'un cycle peut vous laisser endormi et désorienté pendant des heures.

Pour utiliser cette calculatrice, entrez simplement votre heure de coucher ou de lever souhaitée, et l'outil affichera les heures optimales pour faire l'inverse. Par exemple, si vous devez vous lever à 7h00, la calculatrice determine à quelle heure vous devriez vous endormir pour compléter des cycles complets de 90 minutes—en suggérant des heures comme 22h30, 00h00 ou 1h30. Que vous planifiiez une nuit complète de sommeil ou une sieste éclair, cette approche vous aide à aligner votre sommeil avec le rythme naturel de votre corps.

Questions Fréquentes

Implémentation du Code

from datetime import datetime, timedelta

SLEEP_CYCLE_MINUTES = 90
FALL_ASLEEP_MINUTES = 14  # Average time to fall asleep

def wake_times_from_bedtime(bedtime: datetime, cycles: int = 5) -> list[datetime]:
    """Given a bedtime, return optimal wake-up times after N full 90-min cycles."""
    fall_asleep = bedtime + timedelta(minutes=FALL_ASLEEP_MINUTES)
    return [
        fall_asleep + timedelta(minutes=SLEEP_CYCLE_MINUTES * i)
        for i in range(1, cycles + 1)
    ]

def bedtimes_from_wake(wake_time: datetime, cycles: int = 5) -> list[datetime]:
    """Given a desired wake time, return bedtimes that allow N full 90-min cycles."""
    return [
        wake_time - timedelta(minutes=SLEEP_CYCLE_MINUTES * i + FALL_ASLEEP_MINUTES)
        for i in range(1, cycles + 1)
    ]

# Example: bedtime at 11 PM
bedtime = datetime.now().replace(hour=23, minute=0, second=0, microsecond=0)
print(f"Bedtime: {bedtime.strftime('%I:%M %p')}")
print("Best wake times:")
for t in wake_times_from_bedtime(bedtime):
    print(f"  {t.strftime('%I:%M %p')} ({(t - bedtime).seconds // 60} min)")

# Example: must wake at 7 AM
wake = datetime.now().replace(hour=7, minute=0, second=0, microsecond=0)
print(f"\nWake time: {wake.strftime('%I:%M %p')}")
print("Best bedtimes:")
for t in bedtimes_from_wake(wake):
    print(f"  {t.strftime('%I:%M %p')}")

Comments & Feedback

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