我在javascript $scope.dt
中有这个日期变量,内容是Tue Jul 08 2014 00:00:00 GMT+0800 (Malay Peninsula Standard Time)
。我想将其转换为返回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来获得正确的curr_month
?如果我不这样做,那么这个月总会被一个人拒之门外。代码有效,但我不知道它为什么会起作用。
有人可以提供建议吗?
答案 0 :(得分:4)
这是C的遗产。时间戳的月份是从零开始的。
getMonth返回的值是0到11之间的整数.0对应于1月,1到2月,依此类推。
int tm_mon month of year [0,11]
为什么在许多编程语言中从零开始的月份在这里解释:Zero-based month numbering。释义:使用1月== 0在古代很有用,现在我们坚持使用它。
答案 1 :(得分:2)
http://www.w3schools.com/jsref/jsref_getmonth.asp
getMonth()方法返回的月份(从0到11) 指定日期,根据当地时间。
注意:1月是0,2月是1,依此类推。
答案 2 :(得分:1)
月份范围 0-11 。即1月份为0,12月为11岁。因此我们需要加1。