Преобразуйте разницу между двумя датами в формат 'y mo d', используя Moment. js - PullRequest
0 голосов
/ 03 апреля 2020

Я наткнулся на стену, пытаясь выяснить, как преобразовать разницу между двумя датами в точную разбивку того, сколько лет, месяцев и дней прошло с даты начала. Формат, который я хочу показать: «1y 5mo 2d», учитывая два dateTimes, которые имеют эту разницу. Я попытался использовать Момент. js, и он хорошо работает для 'y' и 'mo', но я врезаюсь в стену, пытаясь понять, как точно определить количество дней.

export const convertDaysToYMD = (dates: {start, end})=>{
  const start = Moment(dates.start)
  const end = Moment(dates.end)
  const y = end.diff(start, 'years')
  const m = end.diff(start, 'months')
  const d = end.diff(start, 'days')
  console.log('y', y + ' m', m%12 + ' d', d)
}

Я могу точно узнать количество лет, а затем количество месяцев, используя mod (12), но из-за количества дней, меняющихся в месяце, я не совсем знаю, как получить число дней. Любая помощь будет великолепна.

1 Ответ

0 голосов
/ 03 апреля 2020

Вы можете использовать метод момента duration следующим образом:

const start = moment('2020-01-02');
const end = moment('2020-02-03');

const duration = moment.duration(end.diff(start));

console.log(`${duration.years()} years ${duration.months()} months and ${duration.days()} days.`)
 
<script src="https://momentjs.com/downloads/moment.min.js"></script>
...