@justedoit

Как форматировать кол-во минут в корректное время?

Здравствуйте. Помогите решить вопрос с форматированием времени.
Есть корректное время - строка, пример "10:25" (время отправки).
Есть кол-во минут продолжительность перелёта, пример 1232 (duration)

Получаю из продолжительности часы и минуты следующим образом:
const hour = Math.floor(duration / 60);
const min = duration - hour * 60;


Получилось например 5:10

Вопрос:
Как посчитать чтобы получилась следующее: "10:25" - "15:35". Т.е мы считаем текущее время с отформатированной продолжительностью.
  • Вопрос задан
  • 92 просмотра
Решения вопроса 3
@ivashjke
Vue JS, React, React Native
если по быстрому то так
const initTime = '10:25',
duration = 1232;
const [initHour, initMin] = initTime.split(':');
const calc = parseInt(initHour)*60 + parseInt(initMin) + 1232;

let hour = Math.floor(calc/60); let hourSave = hour;
if (hour > 23) hour -= 24; //ну или если перелет вдруг больше суток еще условия
const min = calc - (hour < hourSave ? hourSave : hour) * 60;

console.log(`${initTime} - ${hour}:${min}`);

как и написали выше - перевести заданное время тем кодом который есть
Ответ написан
Комментировать
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Время отправки переведите в минуты по формуле hours * 60 + minutes, например для 10:25 будет 10 * 60 + 25.
Прибавьте к результату время в пути в минутах (duration)
Вычислите из результата нормальное время. Я бы еще учел, что время может перейти на следующие сутки, проще всего для этого часы брать как остаток от деления на 24. И минуты выделять тоже проще через остаток:
const hours = Math.floor(finishTime / 60) % 24;
const minutes = finishTime % 60;

Ну и наконец, стоит не забывать, что минуты могут получится меньше 10, и тогда для нормализации нужно будет еще дописать к ним ведущий 0
Ответ написан
Комментировать
twobomb
@twobomb
var time =  "10:25";
var duration = 1232 ;
const hour = Math.floor(duration / 60);
const min = duration - hour * 60;
let hs = parseInt(time.split(":")[0]);
let ms = parseInt(time.split(":")[1]);
let he = (hs + hour + Math.floor((min+ms)/60))%24;
let me = (min+ms)%60;
alert(`${hour}:${min} - ${he}:${me}`)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Gimir
@Gimir
JavaScript dev
Если нужно получить стороны строки '10:05'
let timeArr = '10:05'.split(':'); // ['10', '05']
Ответ написан
Комментировать
hzzzzl
@hzzzzl
(10 * 60 + 25) + 1232 перевести в HH:MM указанным кодом? :)

пример 1232 (duration)

это рандомное число "например", или реально имеется в виду 20.5 часов?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы