getMonth () минус что-то дает странные результаты - PullRequest
0 голосов
/ 31 мая 2018

У меня есть код, в котором я тестирую разницу в месяцах между двумя датами.Чтобы получить старую дату, я делаю следующее:

  var oldDate = new Date();
  oldDate.setMonth(oldDate.getMonth() - 5);

Но monthsOldDate возвращает что-то другое, а не пятимесячную дату, почему это ведет себя странно сегодня?и как мне это исправить?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

При попытке добавить или вычесть месяцы из объекта Javascript Date (), который является конечной датой месяца, JS автоматически перемещает ваш объект Date до первой даты следующего месяца, если итоговая дата не существует в его месяце.

Я бы порекомендовал использовать для этого библиотеку, например моменталы,

. Вы можете сделать это с помощью

var monthsOldDate = moment().subtract(6, 'months');

console.log(monthsOldDate.month()) //will log 10 (November)
monthsOldDate = monthsOldDate.set("month", monthsOldDate.month())
console.log(monthsOldDate.format("Do MMMM YYYY"))  //30th November 2017
0 голосов
/ 31 мая 2018

Это потому, что это 31-е число.

Когда вы вызываете метод setMonth() с аргументом -2, он устанавливает дату на 31 ноября 2017 года. Это не фактическая дата, поэтому он преобразуется в1 декабря 2017 г.

См. последний абзац раздела Description для объяснения этого поведения.

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