наверное придется переделывать
Если хотите что-то надёжное - придётся.
Таймеры не гарантируют никакой точности. Всё зависит от того, насколько забит event loop, нагружен ЦП устройства, применяет ли браузер оптимизации неактивных вкладок и так далее.
В идеальных условиях - достаточно точно. Через час максимум пару секунд.
Идеальные условия это:
• Устройство пользователя никогда не подтормаживает,
• В браузере открыто минимум вкладок и вкладка с таймером всегда активна.
• На активной вкладке больше не выполняется никакого кода, кроме таймера.
Во всех остальных условиях - как пойдёт.