Хаб следует правилу вашего часового пояса и сам переводит свои часы. Ничего не теряется, ничего не учитывается дважды, а цены остаются привязанными к нужным часам.
Подробности стоит знать, потому что переход затрагивает сразу три вещи: часы, записи и тарифные зоны.
Откуда хаб знает о переходе
Он хранит полное правило часового пояса, а не фиксированное смещение — строку вида CET-1CEST,M3.5.0,M10.5.0/3, в которой заданы даты перехода. Предустановки в «Настройки → Время» для европейских и американских зон — правила именно такого вида, поэтому хаб, настроенный по предустановке, справляется с переходом сам, каждый год, и вам ничего не нужно делать ни в марте, ни в октябре.
Два момента, на которые стоит обратить внимание:
- Фиксированное смещение никогда не меняется. Если часовой пояс хаба задан простым смещением, он сохраняется весь год. Решает только строка правила, поэтому используйте предустановку или введите корректное правило. (В приложении v1.1.4 и более ранних версиях в редакторе сырой конфигурации был флаг Летнее время, который ни на что не влиял. Его убрали именно поэтому.)
- Зоны Южного полушария с летним временем есть в списке предустановок — Сидней/Мельбурн/Канберра/Хобарт, Аделаида, Брисбен, Перт, Окленд/Веллингтон, Сантьяго, Сан-Паулу/Буэнос-Айрес, Йоханнесбург — и приложение определяет их по браузеру, как и любые другие. В приложении v1.1.4 и более ранних их не предлагали: хаб правильно обрабатывал их правила, но приходилось вводить строку POSIX TZ вручную.
Что происходит с записями
Почасовые записи привязаны к UTC, и именно это делает ночь понятной:
- Осенью повторяющийся местный час — это два разных часа UTC, поэтому получаются две отдельные записи: обе сохраняются, ни одна не перезаписывает другую.
- Весной в данных не пропадает ни один час. Местная метка просто переходит с 01:59 на 03:00.
Записи за день, неделю и месяц следуют вашему местному календарю. Поэтому день перехода действительно длится 23 часа весной и 25 осенью, а неделя и месяц, в которые он попадает, короче или длиннее на час. Это правильно, а не сбой: прошло именно столько времени.
Заметный побочный эффект: почасовой график в местном времени осенью показывает одну метку часа дважды, а весной пропускает одну.
Что происходит со стоимостью
Каждый 15-минутный период оценивается по местному времени своей середины, поэтому энергия всегда получает тот часовой пояс, в который она действительно попала.
Для ночной зоны 23:00–07:00 это значит, что окно длится девять часов осенней ночью и семь весенней. Повторяющийся осенью час — это настоящая энергия, и он оплачивается ночным тарифом, как и предыдущий час.
Одна шероховатость: граница зоны, заданная внутри повторяющегося или пропадающего часа (например, окно, заканчивающееся в 02:30), будет активна дважды в эти полчаса осенью, а весной её край придётся на 03:00. Границы по целым часам вне 02:00–03:00, то есть почти все реальные тарифы, не затрагиваются.
И суточные счётчики
Они сбрасываются в местную полночь, которую переход не сдвигает: европейские и американские переходы происходят между 01:00 и 03:00. Суточные итоги тогда охватывают 23 или 25 часов реальной энергии, а маркер дня хаба несёт новое смещение со следующего дня.
В приложении v1.1.4 и более ранних здесь была заметная ошибка: в эти два дня показатели сегодня в приложении начинались на час раньше, с момента перевода часов, и «сегодня» незаметно включало час предыдущей ночи. Сами записи были верны; на экране «Обзор» читалось значение, которое было на час шире. Исправлено в v1.1.5: «сегодня» начинается в настоящую полночь хаба в оба дня перехода.
Проверено по самотестам прошивки, которые прогоняют код записей и цен на реальных датах перехода для Берлина, Нью-Йорка и Сиднея. Не наблюдалось при реальном переходе.