Почему не правильно работает функция?

144
17 апреля 2018, 03:58

Почему к примеру если указать "17:00","19:00" выведет правильно 7200000ms - то есть до oldtime 2ч.

А вот если указать "22:00","00:00" выведет 79200000ms хотя до "00:00" 7200000ms

В чём проблема?

var nowtime = "17:00"
var oldtime = "19:00"
function Ms(str){
   const [h, m] = str.split(':').map(v => +v)
   const d = new Date();
   d.setHours(h);
   d.setMinutes(m);
   d.setSeconds(0);
   return d.getTime();
}
Ms(nowtime)-Ms(oldtime);
Answer 1

Когда вы указываете 00:00 он не знает, что это следующий день и считает, что между 22:00 и 00:00 не 2 часа, а 22 часа. Чтобы указать что это следующий день прибавляйте к дате 24 * k, где k - это количество дней после текущего. Ну или просто указывайте 24 вместо 00.

var nowtime = "22:00"
var oldtime = "24:00"
function Ms(str){
    const [h, m] = str.split(':').map(v => +v)
    const d = new Date();
    d.setHours(h);
    d.setMinutes(m);
    d.setSeconds(0);
    return d.getTime();
}
console.log(Ms(nowtime)-Ms(oldtime));

На выходе дает: 7200000

var nowtime = "00:00"
var oldtime = "22:00"
function Ms(str, days = 0){
    const [h, m] = str.split(':').map(v => +v)
    const d = new Date();
    d.setHours(days * 24 + h);
    d.setMinutes(m);
    d.setSeconds(0);
    return d.getTime();
 }

console.log(Ms(nowtime, 1)-Ms(oldtime));

Дает такой же результат.

READ ALSO
Почему внезапно заработал hover на айфон?

Почему внезапно заработал hover на айфон?

Насколько мне известно, hover на айфонах просто так не работаетНо тут меня постиг сюрприз

179
Не работает секундомер (React)

Не работает секундомер (React)

Добрый день, буду рад, если вы мне поможете

261
Цвет текста на фоне

Цвет текста на фоне

Возник вопрос: Есть панель, которая меняет свой цвет в зависимости от действий пользователя, а на ней должен отображаться текстИз-за того...

154
Как привести в читаемый вид код js?

Как привести в читаемый вид код js?

Нужно редактировать сжатый js-кодНикогда раньше с этим не сталкивался

141