Javascript 为什么需要将1添加到此日期转换的月份?

Javascript 为什么需要将1添加到此日期转换的月份?,javascript,date,datetime,date-formatting,Javascript,Date,Datetime,Date Formatting,我在javascript中有这个日期变量$scope.dt,内容是2014年7月8日星期二00:00:00 GMT+0800(马来半岛标准时间)。我想将其转换为返回一个字符串,即2014-7-8(YYYY-MM-DD) 下面是我写的函数 function convertDate_YYYYMMDD(d) { var curr_date = d.getDate(); var curr_month = d.getMonth()+1; //why need to add one?

我在javascript中有这个日期变量
$scope.dt
,内容是
2014年7月8日星期二00:00:00 GMT+0800(马来半岛标准时间)
。我想将其转换为返回一个字符串,即
2014-7-8
(YYYY-MM-DD)

下面是我写的函数

function convertDate_YYYYMMDD(d)
{
    var curr_date = d.getDate();
    var curr_month = d.getMonth()+1; //why need to add one?
    var curr_year = d.getFullYear();
    return (curr_year + "-" + curr_month + "-" + curr_date );
}
它很好用。我不明白的是,为什么我需要添加1才能获得正确的
当前月份
?如果我不这样做的话,这个月总是会有一个月的假期。代码是有效的,但我不知道为什么有效


有人能提出建议吗?

这是C语言的遗产。时间戳中的月份是以零为基础的

比较:

getMonth返回的值是介于0和11之间的整数。0对应于1月,1对应于2月,依此类推

:

int tm\u mon月[0,11]


在许多编程语言中,为什么月份以零开始在这里进行了解释:。在古代,使用一月==0是很有用的,现在我们只能使用它。

月份范围是0-11。i、 e.1月为0,12月为11。因此,我们需要在其上添加1

getMonth()方法返回数据的月份(从0到11) 指定日期,根据当地时间

注意:一月是0,二月是1,依此类推


在JavaScript中,月份的索引从
0
Ok开始。这是一个微不足道的问题,但至少我自己编写了代码。为什么会有负面影响?我没想到一个月是从零开始的,而不是从天开始的。消极的一点可能是因为一个简单的问题比你输入这个问题所需的时间要短。@Patrick:你说得对。向上投票。这并不是因为我太懒而不去搜索。我只是没想到一个月从零开始,一天从一开始。语言应该是一致的。现在觉得自己像个傻瓜。多么微不足道的问题。@user3293156:别难过。下次有人搜索时,他们可能会找到你的问题,这可能会帮助他们理解为什么会发生这种情况。考虑一下你在一年的时间里会问多少。请注意,MDN是有关javascript的文档的首选资源,每个人都可以参与其中,而不是W3傻瓜。。。ehrm,帕特里克哈哈。。我认为每个人都对MDN做出了贡献,但维护这些标准的是W3C。W3C,是的,不是W3C。他们没有附属关系()。还有,@帕特里克,谢谢你!我曾经认为W3C学校属于W3C。他们甚至不属于他们。哇!此外,W3C不维护ECMAScript/JavaScript。它只描述浏览器脚本语言(如JavaScript或VBScript)的接口。