Преобразование секунд в ЧЧ: ММ: СС: МС и / или ЧЧ: ММ: СС; F

1

Я пытаюсь написать логику для преобразования секунд в следующие форматы:

  1. HH: MM: SS: MS, где MS - миллисекунды
  2. HH: MM: SS; F, где F - кадры

(а не только HH: MM: SS, поэтому этот вопрос отличается от других в Stackoverflow)

У меня есть следующая логика для получения формата HH: MM: SS в настоящее время:

getTime(seconds) {
  let h = Math.floor(seconds / 3600);
  seconds = seconds % 3600;
  let min = Math.floor(seconds / 60);
  seconds = Math.floor(seconds % 60);
  if (seconds.toString().length < 2) seconds = "0" + seconds;
  if (min.toString().length < 2) min = "0" + min;
  return (h + ":" + min + ":" + seconds);
}

но как я могу получить миллисекунды или фреймы?

Теги:

3 ответа

1

Если seconds - это поплавок, вы можете взять Math.round((seconds - Math.floor(seconds)) * 1000) чтобы получить оставшиеся миллисекунды. Или Math.round((seconds - Math.floor(seconds)) * fps) где fps - количество кадров в секунду.

0

Если ваша функция занимает всего несколько секунд, тогда нет никакой возможности получить миллисекунды из этой информации...

Вы можете предположить, что это нуль миллисекунды.

Если вы хотите быть точным до миллисекунд, ваша функция должна принимать миллисекунды.

0
var getStringFromMS=(ms,res=[])=>(
   [1000,60,60,24].reduce((rest,curr,i)=>(
     res[3-i]=rest%curr,Math.floor(rest/curr)
   ),ms),res.join(":")
);

В действии с текущим временем

Просто перебирайте разные периоды и уменьшайте миллисекунды до нескольких дней, при этом результат сохраняется в res, который можно просто присоединить. Вы можете заменить 1000 кадрами

Ещё вопросы

Сообщество Overcoder
Наверх
Меню