JavaScript: ошибка для приращения секунд

<html>
<head>
<script>
function startTime() {
    var st = "January 19, 2017 18:33:31" 
    var today = new Date(st);
    var montharray = new Array("Jan","Feb","Mar","Abr","May","Jun","Jul","Ogu","Sep","Oct","Nov","Des");
    var h = today.getHours();
    var ampm = h >= 12 ? 'PM' : 'AM';
    h = h % 12;
    h = h ? h : 12;
    var m = today.getMinutes();
    var s = today.getSeconds();
    h = checkTime(h);
    m = checkTime(m);
    s = checkTime(s);
    document.getElementById('txt').innerHTML =
    checkTime(today.getDate())+" "+montharray[today.getMonth()]+" "+today.getFullYear() + " (" + ampm +" " + h + ":" + m + ":" + s +")"; 
    setTimeout(startTime, 1000);
}

function checkTime(i) {
    if (i < 10) {i = "0" + i};
    return i;
}
</script>
</head>
<body onLoad="startTime();">
    <span id="txt"></span>
</body>
</html>

Я хочу автоматически увеличивать секунды. Я знаю, что если я использую

var today = new Date();

Вместо этого,

var st = "January 19, 2017 18:33:31" 
        var today = new Date(st);

это будет выполнено успешно. Но я не хочу этого. Мне нужен вывод, основанный на коде, написанном выше.

Спасибо

1 ответ

Решение

Попробуйте эту модификацию для startTime

var st = "January 19, 2017 18:33:31";
function startTime() {
    var today = new Date(st);
    var montharray = new Array("Jan","Feb","Mar","Abr","May","Jun","Jul","Ogu","Sep","Oct","Nov","Des");
    var h = today.getHours();
    var ampm = h >= 12 ? 'PM' : 'AM';
    h = h % 12;
    h = h ? h : 12;
    var m = today.getMinutes();
    var s = today.getSeconds();
    h = checkTime(h);
    m = checkTime(m);
    s = checkTime(s);
    document.getElementById('txt').innerHTML =
    checkTime(today.getDate())+" "+montharray[today.getMonth()]+" "+today.getFullYear() + " (" + ampm +" " + h + ":" + m + ":" + s +")"; 
    today.setSeconds(today.getSeconds() + 1);
    st = today;
    setTimeout(startTime, 1000);
}

Пример - https://jsfiddle.net/1btotz3a/

Другие вопросы по тегам