Как momentjs вычисляет месяцы назад?

#momentjs

#momentjs

Вопрос:

Я заметил что-то странное и не смог найти никакой документации о том, как momentjs вычисляет месяцы назад.

Сегодня 2 октября 2016 года. Когда я вызываю следующие функции momentjs, я получаю

 moment("20160617", "YYYYMMDD").fromNow();
"4 months ago"
moment("20160618", "YYYYMMDD").fromNow();
"3 months ago"
  

Может кто-нибудь, пожалуйста, объяснить мне, почему 17 июня — 4 месяца назад, а 18 июня — 3 месяца назад?

Ответ №1:

Мое лучшее предположение: это связано с диапазоном moment , вычисляемым для каждой строки. Посмотрите на ключ для M, и это 25-45 дней. Таким образом, «один месяц» может длиться примерно на 15 дней больше, чем обычный месяц. Считая в обратном направлении, 18-е число месяца находится в пределах этого 15-дневного периода со 2-го числа следующего месяца. 17-й будет просто вне этого диапазона. Все это предполагает, что месяц равен «30 дням», что, по-видимому, moment делает для такого рода вычислений.

Комментарии:

1. Это правильно. github.com/moment/moment/blob/develop/min /… фактический коэффициент составляет 30,436875 дней в одном месяце.