До реализации не дошло, но когда обдумывал - пришёл к выводу (вероятно, именно его имел ввиду bialx под словами "программный сдвиг") что "часы - это святое". Для выдачи "наверх" корректируем время из часов на час (да, иногда переходя через границу суток, месяца), отслеживая нахождение внутри "лета" по "нескорректированным" часам.