Kalkulator Siklus Tidur
Menghitung waktu tidur dan bangun optimal berdasarkan siklus tidur 90 menit.
Tentang alat ini
Kalkulator Siklus Tidur membantu Anda memahami dan mengoptimalkan arsitektur tidur alami Anda dengan bekerja dengan siklus tidur 90 menit. Siklus tidur adalah ritme alami tubuh, melewati tidur ringan, tidur dalam, dan tidur REM (tidur bermimpi) sebelum berulang. Bangun di akhir siklus lengkap membuat Anda merasa segar, sementara bangun di tengah siklus dapat membuat Anda merasa mengantuk dan bingung selama berjam-jam.
Untuk menggunakan kalkulator ini, cukup masukkan waktu tidur atau bangun yang Anda inginkan, dan alat ini akan menunjukkan waktu optimal untuk melakukan sebaliknya. Misalnya, jika Anda perlu bangun pada jam 7 pagi, kalkulator menghitung kapan Anda harus tertidur untuk menyelesaikan siklus 90 menit yang lengkap—menyarankan waktu seperti 22:30, 00:00, atau 01:30. Baik Anda merencanakan tidur malam yang lengkap atau tidur siang cepat, pendekatan ini membantu menyelaraskan tidur Anda dengan ritme alami tubuh Anda.
Pertanyaan yang Sering Diajukan
Implementasi Kode
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.