【问题标题】:Javascript date.getYear() returns 111 in 2011? [duplicate]Javascript date.getYear() 在 2011 年返回 111? [复制]
【发布时间】:2011-06-12 21:36:32
【问题描述】:

我有这个 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。我错过了什么明显的东西吗?

【问题讨论】:

  • 您显然是 Y2K 漏洞的第一个受害者。我建议回到过去并幸灾乐祸。
  • 你怎么知道它返回 111?您是否尝试在“var now = new Date()”行之后简单地执行 alert()?
  • @Kelly 在您喜欢的 Javascript 控制台中尝试一下。

标签: javascript datepicker


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我无法相信手册中的复制粘贴答案获得了 31 票(在撰写本文时)。猜猜它显示了这个问题是多么普遍,而且没有人 RTFM... ;o)
    • @Mark 实际上我使用的是这个 SO 问题stackoverflow.com/questions/605113/…,最初是错误的(但它已经更新为使用 getFullYear())。我永远不会读 w3schools 的任何东西 :)
    • @JK。老实说,我怀疑可能是我读了 W3Schools。我不时地钻研那里,通常很快就开始后悔。
    • 哇,千年虫是真的,花了 13 年,但这是我第一次看到现实生活中的例子......我以前总是使用 getFullYear 但我想知道这是什么(看到它一个自动完成选项)。
    【解决方案3】:

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

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

    【讨论】:

    • @StevenLu:看看原始 Java Date API 的可怕之处
    • 哇。 1997 年在 Java API 中弃用。不只是 1997 年,2 月 1997 年...... 1997 年之前甚至真正开始......你知道,我认为 Javascript 并没有真正连接到 Java......
    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2012-08-09
    • 2019-12-15
    相关资源
    最近更新 更多