web-dev-qa-db-ja.com

Javascript date.getYear()は2011年に111を返しますか?

日付フィルターを前月の最初と最後の日に自動的に設定するための次の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()は、予想される2011年ではなく111を返します。見逃したことは明らかですか?

161
JK.

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

getYearは使用されなくなり、getFullYearメソッドに置き換えられました。

getYearメソッドは、年から1900を引いた値を返します。副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example:

  • 2000年以上の場合、getYearによって返される値は100以上です。たとえば、年が2026の場合、getYearは126を返します。
  • 1900年から1999年までの年の場合、getYearによって返される値は0から99です。たとえば、年が1976の場合、getYearは76を返します。
  • 1900年未満の場合、getYearによって返される値は0未満です。たとえば、年が1800の場合、getYearは-100を返します。
  • 2000年の前後の年を考慮するには、getFullYearの代わりにgetYearを使用して、年を完全に指定する必要があります。
277
deceze

骨抜きの先例に準拠するために、getYear()は1900年からの年数を返します。

代わりに、実際の年を返すgetFullYear()を呼び出す必要があります。

31
SLaks

MozillaのJSページで読んだことから、g​​etYearは非推奨です。何度も指摘されているように、getFullYear()が道です。本当にgetYear()を使用したい場合は、1900を追加してください。

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