Форматирование миллисекунд в dd:чч:мм:сс в угловых

#javascript #angular #typescript

Вопрос:

Ну, я пытаюсь отформатировать миллисекунду в dd:чч:мм:сс. У меня есть, например, 206000 миллисекунд.

Это должно быть отформатировано следующим образом: 00:00:03:26.

Но если я использую этот код:

 showTimeWithHour(milliSeconds: number): string {
    const date = new Date(milliSeconds);
    return formatDate(date, 'dd:hh:mm:ss', 'en-US')
}
 

Я получаю такой результат: 01:01:03:26, но это должно быть 00:00:03:26.

Комментарии:

1. @Dexygen Angular имеет встроенную функцию под названием formatDate , которая используется в этом вопросе. geeksforgeeks.org/angular-10-formatdate-method

Ответ №1:

Это может сработать:

 const timeWithMs = () => 
  `${new Date().toLocaleString('en-GB').split(' ')[1]}:${new Date().getMilliseconds()}`;

console.log(timeWithMs()); 

В основном я беру текущее время и добавляю к нему текущие миллисекунды.

если вы хотите, чтобы миллисекунды были отформатированы только в 2 числа, вы можете сделать следующее:

 const timeWithMs = () => 
  `${new Date().toLocaleString('en-GB').split(' ')[1]}:${new Date().getMilliseconds().toString().slice(0,2)}`;

console.log(timeWithMs()); 

И вы также можете получить дату в качестве параметра функции:

 const timeWithMs = (date) => 
  `${date.toLocaleString('en-GB').split(' ')[1]}:${date.getMilliseconds().toString().slice(0,2)}`;

const someDate = new Date(12487125);
console.log(timeWithMs(someDate)); 

Ответ №2:

Вы можете сделать следующее,

 function showTimeWithHour(milliSeconds) {
  days = Math.floor(milliSeconds / (24 * 60 * 60 * 1000));
  daysFromMilliSeconds = milliSeconds % (24 * 60 * 60 * 1000);
  hours = Math.floor((daysFromMilliSeconds) / (60 * 60 * 1000));
  hoursFromMilliSeconds = milliSeconds % (60 * 60 * 1000);
  minutes = Math.floor((hoursFromMilliSeconds) / (60 * 1000));
  minutesFromMilliSeconds = milliSeconds % (60 * 1000);
  seconds = Math.floor((minutesFromMilliSeconds) / (1000));

  days = days.toString().length == 1 ? days.toString().padStart(2, '0') : days.toString();
  hours = hours.toString().length == 1 ? hours.toString().padStart(2, '0') : hours.toString();
  minutes = minutes.toString().length == 1 ? minutes.toString().padStart(2, '0') : minutes.toString();
  seconds = seconds.toString().length == 1 ? seconds.toString().padStart(2, '0') : seconds.toString();

  return days   ":"   hours   ":"   minutes   ":"   seconds;
}

console.log(showTimeWithHour(206000)); 

Комментарии:

1. В вашем решении отображается только чч:мм:сс

2. Я обновил свой ответ.

3. Теперь я получаю только этот формат d:h:m:s, т. е. 0:0:3:26

4. @govit19 Я обновил свой ответ.