Javascript date.getYear()在2011年返回111?

时间:2011-01-21 02:52:09

标签: javascript datepicker

我有这个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年。是否有一些我错过的明显内容?

3 个答案:

答案 0 :(得分:274)

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,以便全年指定年份。
  •   

答案 1 :(得分:31)

为了遵守愚蠢的先例,getYear()返回自1900年以来的年数。

相反,你应该调用getFullYear(),它会返回实际年份。

答案 2 :(得分:5)

根据我在Mozilla的JS页面上看到的内容,不推荐使用getYear。正如多次指出的那样,getFullYear()是要走的路。如果您真的想使用getYear()添加1900。

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