Планетарные часы

Метод и реализация

Как вычисляются планетарные часы (шаг за шагом)

Именно эту процедуру использует надёжный калькулятор. Арифметика — не самоцель; важно корректно определить границы и последовательность, в правильном часовом поясе и для правильной гражданской даты.

Шаг 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 — только для отображения; расчёты ведутся в абсолютных метках времени.

Далее: Объяснение неравных часов · Как читать таблицу