Таймер Javascript только на минуты и секунды

Я нашел JSFiddle с таймером, который считает каждую секунду. За исключением того, что я хочу, чтобы это работало только с минутами и секундами. Нет часов.

Любые идеи?


person mike    schedule 17.10.2013    source источник


Ответы (6)


  • DATE_OBJ.getSeconds(), чтобы получить секунды объекта Date.
  • DATE_OBJ. getMinutes() чтобы получить минуты Date объекта.
  • setInterval для вызова функции обработчика через каждую секунду (1000ms).

var handler = function() {
  var date = new Date();
  var sec = date.getSeconds();
  var min = date.getMinutes();
  document.getElementById("time").textContent = (min < 10 ? "0" + min : min) + ":" + (sec < 10 ? "0" + sec : sec);
};
setInterval(handler, 1000);
handler();
<h1 id="time" style="text-align: center"></h1>

person Rayon    schedule 17.10.2013

Вот очень хакерский подход - http://jsfiddle.net/gPrwW/1/

HTML

<div id="worked">31:14</div>

JS:

$(document).ready(function (e) {
    var $worked = $("#worked");

    function update() {
        var myTime = $worked.html();
        var ss = myTime.split(":");
        var dt = new Date();
        dt.setHours(0);
        dt.setMinutes(ss[0]);
        dt.setSeconds(ss[1]);

        var dt2 = new Date(dt.valueOf() + 1000);
        var temp = dt2.toTimeString().split(" ");
        var ts = temp[0].split(":");

        $worked.html(ts[1]+":"+ts[2]);
        setTimeout(update, 1000);
    }

    setTimeout(update, 1000);
});
person Vandesh    schedule 17.10.2013
comment
Хотя можно улучшить! - person Vandesh; 17.10.2013
comment
Работает для того, для чего я его использую. Спасибо! - person mike; 17.10.2013
comment
Как остановить таймер по клику? - person Ionut; 13.09.2016

Точный способ справиться с этим следующий:

  1. сохранить время запуска скрипта
  2. в функции, которая вызывается повторно, получить прошедшее время
  3. конвертировать прошедшее время в любой формат и показывать его

Образец кода:

var initialTime = Date.now();

function checkTime(){
  var timeDifference = Date.now() - initialTime;
  var formatted = convertTime(timeDifference);
  document.getElementById('time').innerHTML = '' + formatted;
}

function convertTime(miliseconds) {
  var totalSeconds = Math.floor(miliseconds/1000);
  var minutes = Math.floor(totalSeconds/60);
  var seconds = totalSeconds - minutes * 60;
  return minutes + ':' + seconds;
}
window.setInterval(checkTime, 100);

Вы можете легко изменить степень детализации проверки времени (в настоящее время установлено значение 0,1 секунды). Преимущество этого таймера в том, что он никогда не будет рассинхронизирован при обновлении.

person Tibos    schedule 17.10.2013
comment
Я бы просто добавил следующее, чтобы отображалось 09:05 вместо 9:5 var minutes = leftPad(Math.floor(totalSeconds/60),2); var seconds = leftPad(totalSeconds - minutes * 60,2); где: function leftPad (aNumber, aLength) { if (aNumber.toString().length >= aLength return aNumber; return (Math.pow(10, aLength) + Math.floor(aNumber)).toString().substring(1); } - person JoeGalind; 15.03.2015

Вы можете сделать функцию, которая увеличивает счетчик каждый раз, когда он вызывается, показывает значение как: счетчик/60 минут, счетчик%60 секунд

Затем вы можете использовать функцию setInterval, чтобы JavaScript вызывал ваш код каждую секунду. Это не очень точно, но достаточно для простых таймеров.

person Emre    schedule 17.10.2013

Это может быть что-то? таймер простого подсчета в javascript

Он основан на методе setInterval.

setInterval(setTime, 1000);
person Hiny    schedule 17.10.2013

person    schedule
comment
Вы должны включить объяснение в свой пример кода, чтобы помочь другим понять, что делает ваш фрагмент кода. - person Todd; 12.05.2017