Крок 1 — Отримай схід і захід (коректно)
- ✦Використовуй часовий пояс локації (включно з правилами DST).
- ✦Використовуй місцеву цивільну дату (не UTC-мітки).
Крок 2 — Обчисли тривалості часових годин
Нехай sunrise, sunset і nextSunrise — місцеві часи.
dayLen = sunset - sunrise
nightLen = nextSunrise - sunset
dayHour = dayLen / 12
nightHour = nightLen / 12Крок 3 — Побудуй 24 межі
- Денна година i:
[sunrise + (i-1)*dayHour, sunrise + i*dayHour] - Нічна година j:
[sunset + (j-1)*nightHour, sunset + j*nightHour]
Крок 4 — Признач планетних владик
Використай халдейський порядок: Сатурн → Юпітер → Марс → Сонце → Венера → Меркурій → Місяць (повторювати).
- ✦Перша денна година починається з владики дня тижня.
- ✦Продовжуй послідовність безперервно через день і ніч (не скидай опівночі).
Нотатки реалізації
- ✦Коректно обробляй полярні випадки (нема сходу/заходу).
- ✦Тримай межі з точністю до секунди, щоб уникнути «пливучого» UI.
- ✦12h/24h — лише відображення; внутрішня математика лишається на абсолютних таймстемпах.