задача с цифрами в часах

233
26 марта 2022, 13:20

let x = '10:10' 
let s = x.split(':') 
console.log(s)
Задачу нужно решить следующим образом: нужно с помощью split разделить то что в переменной, потом отнять 45 минут(0:45)от второй части, проблема в следующем не могу получить 9։25

Answer 1

const tt = '10:10'; 
const divin = '0:45'; 
console.log(new Date(new Date(`0 ${tt}`) - new Date(`0 ${divin}`)).toISOString().slice(11, 16));

Answer 2

В моем примере, нет стрелочных функций, но если вы планируете их использовать, то вам вполне подойдет решение с использованием классов и ес6

class Clock { 
  constructor(string) { 
    const [hours, minutes] = string.split(':'); 
    this.hours = Number(hours) || 0; 
    this.minutes = Number(minutes) || 0; 
  } 
  changeMinutes(minutes = 0) { 
    const diff = this.minutes + minutes; 
    this.hours += Math.floor(diff / 60); 
    this.minutes = Math.abs((60 + diff) % 60); 
  } 
  toString() { 
    return `${`${this.hours}`.padStart(2, '0')}:${`${this.minutes}`.padStart(2, '0')}`; 
  } 
} 
 
const clock = new Clock('10:10'); 
console.log('before', clock.toString()); 
clock.changeMinutes(-45) 
console.log('after', clock.toString());

Answer 3

let x = '10:10'; 
const subs = '0:45'; 
 
const corr = [0, 60]; // коэффициенты корректировки 
let s = x.split(':').reduceRight( 
  (sum, cur, idx) => { 
    // Вычитаем из текущего разряда соответствующий разряд аккумулятора 
    sum[idx] = cur - sum[idx]; 
    if (sum[idx] < 0 && idx >= 0) {  // если получили переполнение 
      // прибавляем корректировочный коэффициент 
      sum[idx] += corr[idx]; 
      // и добавляем единицу в следующий разряд 
      sum[idx - 1]++; 
    } 
    return sum; 
  }, 
  subs.split(':')  // в качестве аккумулятора отдаем массив 
); 
console.log(s.join(':'));

READ ALSO
тип данных Symbol в JS

тип данных Symbol в JS

Недавно начал изучать JSне могу понять для чего, зачем, почему и как использовать тип данных Symbol

98
Как построить маршрут яндекс карты API

Как построить маршрут яндекс карты API

Как можно построить маршрут между двумя точками с предварительной проверкой этих точек на яндекс картахНашел пример но там нужно задать...

216
Как создать SVG дуги между двумя точками

Как создать SVG дуги между двумя точками

Я хочу соединить две точки SVG (например, центры двух окружностей), используя дугиЕсли будет только одно соединение, то линия (<path>) будет...

123
Использование буфера трафарета (stencil buffer) в three.js

Использование буфера трафарета (stencil buffer) в three.js

Пытаюсь создать сцену с применением буфера трафарета, но к сожалению, по его использованию слишком мало информации и примеровПланирую по центру...

176