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()的回报率是111,而不是预期的2011年。有什么明显的地方我遗漏了吗?

112269 次浏览

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

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

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,以便完整地指定年份。

我在 Mozilla 的 JS 页面上看到,getYear 是不被推荐的。正如多次指出的那样,getFullYear()才是正确的选择。如果你真的想使用 getYear()添加1900到它。

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