Момент. js конвертировать x минут в y часов z минут - PullRequest
1 голос
/ 03 февраля 2020

Итак, у меня есть номер, например 90. что я хочу сделать, это преобразовать его в "1 hr 30 mins". Я пробовал это:

moment.utc(
    moment.duration(90, "minutes")
    .asMilliseconds()
).format("h:mm")

Это возвращает 1:30.

Если это сделать,

moment.utc(
    moment.duration(90, "minutes")
    .asMilliseconds()
).format("h [hour] mm [minutes]")

, тогда я получу 1 hour 30 minutes.

Это здорово, но если я подключу 180, то получу 3 hour 00 minutes, но это должно быть 3 hours. 00 минут должны быть пропущены, а час должен быть час , если количество часов больше 1. То же самое относится и к минутам.

Возможно ли это с моментом. js?

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Я не думаю, что это возможно с помощью momemt js.

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

input=180;

hour=Math.floor(input/60);
min=input%60;
format = "";
//console.log(hour);
//console.log(min);
if (hour>1 && min>1)
    format = "h [hours] mm [minutes]";
else if (hour>1 && min==1)
    format = "h [hours] mm [minute]";
else if (hour>1 && min==0)
    format = "h [hours]";
else if( hour==0 && min>1)
    format = "m [minutes]";
else if (hour==0 && min<=1)
    format = "mm [minute]";
else
    format="";
//console.log(format);

moment.utc(
    moment.duration(input, "minutes")
    .asMilliseconds()
).format(format)
1 голос
/ 03 февраля 2020

Вы можете просто написать собственный код для решения проблемы, например:

const time1 = moment.utc(
  moment.duration(180, "minutes")
  .asMilliseconds()
)

const time2 = moment.utc(
  moment.duration(90, "minutes")
  .asMilliseconds()
)

function formatTime(time) {
  const minutes = time.minutes();
  const hours = time.hours();
  const hourFormatStr = hours === 1 ? 'hour' : 'hours';
  const minuteFormatStr = minutes === 1 ? 'minute' : 'minutes';
  if (!time.minutes()) {
    return time.format(`h [${hourFormatStr}]`);
  }
  return time.format(`h [${hourFormatStr}] mm [${minuteFormatStr}]`);
}

console.log(formatTime(time1));
console.log(formatTime(time2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

Кроме того, я нашел эту библиотеку , которая, кажется, выполняет ту работу, которую вы хотите.

...