#javascript #momentjs
#javascript #momentjs
Вопрос:
У меня есть startTime
и endTime
, на основе которого мне нужно создать обратный отсчет, который будет отображаться в HH:MM:SS
формате постоянно.
Например:
var endTime = 1601454312537 // Wed Sep 30 2020 13:55:12
var startTime = 1600417512537 // Fri Sep 18 2020 13:55:12
var diff = endTime - startTime
var duration = moment.duration(diffTime * 1000, 'milliseconds')
Затем разница передается в setInterval, где,
setInterval(() => {
duration = moment.duration(duration - interval, 'milliseconds');
h = duration.hours(),
m = duration.minutes(),
s = duration.seconds()
}, 1000);
Это дает мне правильное время, но когда оно превышает 24 часа, moment передает его через день.
Есть ли какой-либо способ сохранить все различия в формате HH: MM: SS?
Есть ли какая-либо функция moment, чтобы ограничить ее часами, минутами, секундами?
Комментарии:
1. Вызывает ли это какие-либо проблемы в коде, если он передает его как день?
2. Что-то вроде
h= duration.days() * 24 duration.hours()
…? (Может ли это вызвать у вас проблемы с переходом на летнее время в какой-то момент, я оставляю вам разобраться.)3. @ShubhamSrivastava Мне нужно отобразить его в часах. Даже если его 24 , не имеет значения.
4. Посмотрите на это github.com/moment/moment/issues/463 ; Я бы предпочел использовать countdown.js для этого countdownjs.org
5. Решение @TasosBu, размещенное по вашей ссылке, работает. Спасибо
Ответ №1:
Это одна из функций, которую я использую, которая не требует momentjs
, прямого способа сделать это в momentjs
любом:
// Duration in seconds
const durationString = duration =>
`${
Math.floor(duration / 60) > 9 ? Math.floor(duration / 60) : `0${Math.floor(duration / 60)}`
} m ${duration % 60 > 9 ? Math.round(duration % 60) : `0${Math.round(duration % 60)}`}s`
Ответ №2:
Публикуя решение, которое сработало для меня —
вы можете дополнительно разделить строку minutesSeconds.
var minutesSeconds = moment.utc(totalMilliseconds).format("mm:ss")
var hours = Math.floor(moment.duration(totalMilliseconds).asHours())
console.log("HH:MM:SS",hours ':' minutesSeconds)