ninetwgb
@ninetwgb
Живу

Почему дата в javascript запинается на 01 месяце 30 числа?

Суть вопроса такова:
есть задачка, реализовать дату в формате дд.мм.гггг
с этим проблем нет.
function formatDate(date) {
      var dd = date.getDate(); 
      if (dd < 10) dd = '0' + dd; //дописываем числу 0 если число меньше 10 (01,02 и т.д.)
    
      var mm = date.getMonth() + 1; //возвратит месяц, начиная с нуля. Увеличим его на 1
      if (mm < 10) mm = '0' + mm;
    
      var yy = date.getFullYear() % 100;
      if (yy < 10) yy = '0' + yy;
    
      return dd + '.' + mm + '.' + yy;
}
    
    var d = new Date(2016, 01, 30);
    alert( formatDate(d) );

Но вот где возникает проблема:
var d = new Date(2016, 01, 30);
    alert( formatDate(d) );

Т.е. если устанавливать любой другой месяц и день, то все нормально. Например 2016, 02, 30 выдаст 30.03.2016. А если 2016, 01, 30, то выводит 02.03.2016 (по идее должно быть 30.02.2016).
Объясните, пожалуйста, почему так происходит? Всю голову сломал. В поисках толком ответа так и не нашел...
Спасибо.
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
Потому что "2016, 01, 03" это "2016 год, второй месяц (февраль), 30-е число". Такого числа нет, вот он и сдвигает дату
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы