#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 Я обновил свой ответ.