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.