Nano Hash - криптовалюты, майнинг, программирование

Повторяющийся таймер обратного отсчета - каждые 10 минут в зависимости от фактического времени

Я пытаюсь создать таймер обратного отсчета, который будет постоянно отсчитывать до ближайшего 10-минутного интервала реального времени. Таким образом, если пользователь переходит на страницу в 16:01, он будет отсчитывать 9:00, а затем сбрасывать, когда достигнет 0. Но время всегда будет относиться к фактическому времени.

Это то, что у меня есть до сих пор:

    <p id="timer"></p>

    <script>
      var start = Date.now(),
        r = document.getElementById("timer");
      (function f() {
        var diff = Date.now() - start,
          ns = ((6e5 - diff) / 1000) >> 0,
          m = (ns / 60) >> 0,
          s = ns - m * 60;
        r.textContent =
          m + ":" + (("" + s).length > 1 ? "" : "0") + s + " minutes";
        if (diff > 6e5) {
          start = Date.now();
        }
        setTimeout(f, 1000);
      })();
    </script>

Вот код моего рабочего кода https://codepen.io/gvolkerding/pen/jOOmygQ

Это отсчитывает только 10 минут с момента, когда пользователь попадает на страницу, но я не могу понять, как изменить его, чтобы искать следующую 10-минутную отметку, а затем отсчитывать до нее. Любая помощь будет принята с благодарностью


Ответы:


1

Не самый эффективный способ справиться с этим, но он должен гарантировать, что обратный отсчет остается в соответствии с часами клиентского компьютера. Просто получите минуты и секунды текущей даты и времени, а затем рассчитайте остаток до следующей 10-минутной отметки.

const countdown = () => {
  let timer = document.getElementById('timer');
  let dt = new Date();
  let m = dt.getMinutes();
  let s = dt.getSeconds();
  
  // minutes remaining until next 10 minute mark
  m = s ? 9 - (m % 10) : 10 - (m % 10);
  
  // seconds remaining until next minute mark
  if (s) {
    s = 60 - s;
  }

  timer.textContent = `${m}:${s < 10 ? '0' + s : s} minutes`;
}

setInterval(countdown, 1000);
<p id="timer"></p>

24.10.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..