web-dev-qa-db-fra.com

Javascript date.getYear () renvoie 111 en 2011?

J'ai ce javascript pour définir automatiquement un filtre de date sur le premier et le dernier jour du mois précédent:

$(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);
}); 

MAIS now.getYear() renvoie 111 au lieu de 2011. Est-ce qu'il y a quelque chose d'évident que j'ai manqué?

161
JK.

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

getYear n'est plus utilisé et a été remplacé par la méthode getFullYear.

La méthode getYear renvoie l'année moins 1900; Ainsi:

  • Pour les années supérieures ou égales à 2000, la valeur renvoyée par getYear est égale ou supérieure à 100. Par exemple, si l'année est 2026, getYear renvoie 126.
  • Pour les années comprises entre 1900 et 1999 inclus, la valeur renvoyée par getYear est comprise entre 0 et 99. Par exemple, si l'année est 1976, getYear renvoie 76.
  • Pour les années inférieures à 1900, la valeur renvoyée par getYear est inférieure à 0. Par exemple, si l'année est 1800, getYear renvoie -100.
  • Pour prendre en compte les années avant et après 2000, vous devez utiliser getFullYear au lieu de getYear afin que l'année soit spécifiée dans son intégralité.
277
deceze

Afin de se conformer à la jurisprudence boneheaded, getYear() renvoie le nombre d'années écoulées depuis 1900.

Au lieu de cela, vous devez appeler getFullYear(), qui renvoie l'année en cours.

31
SLaks

D'après ce que j'ai lu sur les pages JS de Mozilla, getYear est obsolète. Comme indiqué à plusieurs reprises, getFullYear() est la voie à suivre. Si vous voulez vraiment utiliser getYear() ajoutez 1900.

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