Как рассчитать количество времени, оставшееся до определенного часа?

Как можно улучшить механизм определения времени до следующего часа для случая, когда локальное время не входит в рабочий часовой промежуток?
  • 18 февраля 2024 г. 19:18
Ответы на вопрос 2
Для расчета времени, оставшегося до определенного часа, можно воспользоваться следующим способом: 
1. Получить текущее время.
2. Определить час, до которого нужно рассчитать время.
3. Вычислить разницу между текущим часом и заданным часом.
4. Если текущий час больше заданного, значит оставшееся время до следующего заданного часа - это разница между текущим часом и 24 часами плюс заданный час. В противном случае это просто разница между заданным часом и текущим.

Для того чтобы улучшить механизм определения времени до следующего часа в случае, когда локальное время не входит в рабочий часовой промежуток, можно использовать условные операторы или циклы. Например, можно добавить проверку, чтобы определить, входит ли текущее время в рабочий часовой промежуток, и если нет, то задать ближайший крайний часовой промежуток (например, начало следующего рабочего дня). Также можно уточнить условия и определить более точный алгоритм для решения данной задачи.
Можно прибавлять 24 часа там, где что-то меньше чего-то.. <br/> <br/> Примерно так, наскоро. Подробно не проверял: <pre><code class="javascript">function workHours(on, off, testNow = null) {
  // TODO: validate input
  const now = testNow ?? new Date().getHours();
  const a = Number(on);
  let b = Number(off);

  const format = (status, nextTime) =&gt; ({ status, next_time: nextTime });

  if (a === b) {
    return format(true, 0);
  }

  if (a &gt; b) {
    b += 24;
  }

  if (now &gt;= a &amp;&amp; now &lt; b) {
    return format(true, 0);
  }

  if (now &lt; a) {
    return format(false, a - now);
  }

  return format(false, a + 24 - now);
}</code></pre> <br/>
Похожие вопросы