Почему так происходит? Странное поведение с JavaScript с вычитанием Date (). CodePen + Видео

HTML5 replaceState - это ответ, как уже упоминалось Vivart и geo1701. Однако он не поддерживается во всех браузерах / версиях. History.js обертывает функции состояния HTML5 и предоставляет дополнительную поддержку для браузеров HTML4.

-1
задан Berin Aptula 1 March 2019 в 22:46
поделиться

1 ответ

Я сделал это, добавив время останова как отрицательные минуты.

$(".calculate").click(function(){

    // Refer to starting hours and ending hours which get their value from chosen fields
    var secondTime = startHr + ":" + startMin +":00";
    var firstTime = endHr + ":" + endMin + ":00";

    let startHour = new Date().setUTCHours(...(firstTime.split(":")));
    let endHour = new Date().setUTCHours(...(secondTime.split(":")));

    let finalHours = new Date(startHour - endHour);
    finalHours.setMinutes(- +pause);

    // ------------ 
    var workedHours = finalHours.getUTCHours() +":"+ finalHours.getUTCMinutes();
    $('.workHours').text(workedHours);
})

В вашем примере вы вычитали милисекунды (точнее, миллисекунды, прошедшие с 1 января 1970 года по Гринвичу), поэтому я предполагаю, что когда JS округляет результаты округления до более низкого значения, в результате чего на 1 минуту меньше, чем ожидалось. Но я не доказал это.

0
ответ дан JavierFromMadrid 1 March 2019 в 22:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: