Вы не можете сделать это с distanceInWord
в соответствии с документацией, так как он создан для широких диапазонов и коротких строк результата (about 7 years
вместо 7 years, 4 months, 7 weeks, 3 days and 5 seconds
).Вы можете использовать только единицы в distanceInWordStrict
- при передаче {unit: 'm'}
в качестве третьего параметра будет выведено 90 minutes
.
Но вы можете получить разницу между датами с любыми единицами и в соответствии с результатом - отформатируйте как вы 'я бы хотелПримерно так:
let result;
const date1 = '1 January 2019 15:00:00';
const date2 = '1 January 2019 16:30:00';
const minutes = Math.abs(differenceInMinutes(date1, date2));
if(minutes < 60) {
result = distanceInWordsStrict(date1, date2, {unit: 'm'})
}
else {
result = distanceInWordsStrict(date1, date2, {unit: 'h'});
result = result.replace(/ hours?/, `h${minutes % 60}m`)
}
Если вы никогда не идете часами, то это будет более простой подход к форматированию:
const hours = Math.abs(differenceInHours(date1, date2);
result = `${hours}h${minutes % 60}m`;
Также вы можете просто получить разницу в миллисекундах, создатьобъект даты и отформатируйте его любым удобным для вас способом.
Обратите внимание, что если разница будет превышать день, она будет выводиться с количеством часов.Таким образом, окончательное решение в основном зависит от вашего разнообразия возможных диапазонов.