Javascript date-fns более конкретное расстояние InWords - PullRequest
0 голосов
/ 03 апреля 2019

Я использую distanceInWord , чтобы узнать, сколько времени проходит между двумя датами. Но это не совсем то, чего я хочу, потому что мне нужно быть более конкретным.

Например, если у меня есть это: 1 January 2019 15:00:00 and 1 January 2019 16:30:00

На самом деле возвращается 1 hour с distanceInWordStrict() или about 1 hour с distanceInWord().

Так что мне нужно получить 1h30 для этого.

Как мне быть более конкретным? 1: 30, 2: 15, 3: 45, 2 дня и 5 часов и т. Д.

1 Ответ

1 голос
/ 03 апреля 2019

Вы не можете сделать это с 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`;

Также вы можете просто получить разницу в миллисекундах, создатьобъект даты и отформатируйте его любым удобным для вас способом.

Обратите внимание, что если разница будет превышать день, она будет выводиться с количеством часов.Таким образом, окончательное решение в основном зависит от вашего разнообразия возможных диапазонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...