Javascript date.getYear() returns 111 in 2011?
JavascriptDatepickerJavascript Problem Overview
I have this javascript for automatically setting a date filter to the first and last day of the previous month:
$(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);
});
BUT now.getYear()
is returning 111 instead of the expected 2011. Is there something obvious I've missed?
Javascript Solutions
Solution 1 - Javascript
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/getYear
> getYear
is no longer used and has been replaced by the getFullYear
method.
>
> The getYear
method returns the year minus 1900; thus:
>
> - For years greater than or equal to 2000, the value returned by getYear
is 100 or greater. For example, if the year is 2026, getYear
returns 126.
> - For years between and including 1900 and 1999, the value returned by getYear
is between 0 and 99. For example, if the year is 1976, getYear
returns 76.
> - For years less than 1900, the value returned by getYear
is less than 0. For example, if the year is 1800, getYear
returns -100.
> - To take into account years before and after 2000, you should use getFullYear
instead of getYear
so that the year is specified in full.
Solution 2 - Javascript
In order to comply with boneheaded precedent, getYear()
returns the number of years since 1900.
Instead, you should call getFullYear()
, which returns the actual year.
Solution 3 - Javascript
From what I've read on Mozilla's JS pages, getYear is deprecated. As pointed out many times, getFullYear()
is the way to go. If you're really wanting to use getYear()
add 1900 to it.
var now = new Date(),
year = now.getYear() + 1900;