Javascript date.getYear() возвращает 111 в 2011 году?

У меня есть этот javascript для автоматической установки фильтра даты в первый и последний день предыдущего месяца:

$(document).ready(function () {
    $("#DateFrom").datepicker({ dateFormat: 'dd/mm/yy' });
    $("#DateTo").datepicker({ dateFormat: 'dd/mm/yy' });

    var now = new Date();
    var firstDayPrevMonth = new Date(now.getYear(), now.getMonth() - 1, 1);
    var firstDayThisMonth = new Date(now.getYear(), now.getMonth(), 1);
    var lastDayPrevMonth = new Date(firstDayThisMonth - 1);

    $("#DateFrom").datepicker("setDate", firstDayPrevMonth);
    $("#DateTo").datepicker("setDate", lastDayPrevMonth);
}); 

НО now.getYear() возвращает 111 вместо ожидаемого 2011 года. Есть ли что-то очевидное, что я пропустил?

Ответ 1

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/getYear

getYear больше не используется и заменен методом getFullYear.

Метод getYear возвращает год минус 1900; Таким образом:

  • В течение лет, больших или равных 2000, значение, возвращаемое getYear, равно 100 или больше. Например, если год равен 2026, getYear возвращает 126.
  • В течение лет между 1900 и 1999 годами значение, возвращаемое getYear, составляет от 0 до 99. Например, если в 1976 году, getYear возвращает 76.
  • В течение лет менее 1900 значение, возвращаемое getYear, меньше 0. Например, если год равен 1800, getYear возвращает -100.
  • Чтобы учитывать годы до и после 2000 года, вы должны использовать getFullYear вместо getYear, чтобы весь год был указан полностью.

Ответ 2

Чтобы соответствовать прецеденту с головным мозгом, getYear() возвращает количество лет с 1900 года.

Вместо этого вы должны вызвать getFullYear(), который возвращает текущий год.

Ответ 3

Из того, что я читал на страницах Mozilla JS, getYear устарел. Как указывалось много раз, getFullYear() - это путь. Если вы действительно хотите использовать getYear() добавить к нему 1900.

var now = new Date(),
    year = now.getYear() + 1900;