В Javascript, сегодня (31/5) добавить 1 месяц получит 1/7 - PullRequest
3 голосов
/ 31 мая 2019

Сегодня я только что обнаружил, что если я добавлю 1 месяц к сегодняшней дате, он вернет 1/7.

Может кто-нибудь помочь с этим?Большое спасибо.

Обратите внимание: я не назначил дату для today, потому что сегодня 31/5, а некоторые из вас, ребята, все еще на 30/5

var today = new Date(); // today is 31/5 in my timezone
console.log(today);
today.setMonth(today.getMonth() + 1);
console.log(today);

1 Ответ

3 голосов
/ 31 мая 2019

Это странный способ работы дат в JavaScript. Согласно документации в MDN :

Текущий день месяца будет влиять на поведение этого метод. Концептуально это добавит количество дней, данных текущий день месяца до 1-го числа нового месяца, указанного как параметр, чтобы вернуть новую дату. Например, если текущий значение 31 августа 2016 г., вызов setMonth со значением 1 будет возвращение 2 марта 2016 года. Это потому, что в феврале в феврале было 29 дней.

В вашем случае, когда вы добавляете месяц к 31 мая, вы получаете 31 июня. Это недействительная дата, и JavaScript переводит ее на 1 июля

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