为什么此代码会出现 Uncaught TypeError
2017-09-06
139
我想获取第二天并将其格式化为“yyyy-MM-dd HH:mm”格式,但是当我在 chrome 的控制台中运行它时,我得到了 Uncaught TypeError: date.getHours is not a function,为什么?nextDay 变量显然是 Date 的一个实例。
但是当我删除小时和分钟,只保留年、月和日期时,它成功了,有人能告诉我原因吗?
var time = new Date().getTime();
var interval = 24 * 60 * 60 * 1000;
var nextDay = new Date(time + interval);
function padding(number) {
return number < 10 ? "0" + number : "" + number;
}
function format(date) {
var year = date.getFullYear(),
month = date.getMonth(),
date = date.getDate(),
hour = date.getHours(),
minute = date.getMinutes();
return padding(year) + "-"
+ padding(month + 1) + "-"
+ padding(date) + " "
+ padding(hour) + ":"
+ padding(minute);
}
console.log(format(nextDay));
2个回答
您的函数采用一个名为“date”的参数,然后尝试声明一个名为“date”的局部变量。该声明将被忽略,初始化程序将仅覆盖该参数的值。
更改参数的名称:
function format(d) {
var year = d.getFullYear(),
month = d.getMonth(),
date = d.getDate(),
hour = d.getHours(),
minute = d.getMinutes();
return padding(year) + "-"
+ padding(month + 1) + "-"
+ padding(date) + " "
+ padding(hour) + ":"
+ padding(minute);
}
Pointy
2017-09-06
您使用与参数相同的变量名,
date
使用了两次,请像下面这样更改变量名。
var time = new Date().getTime();
var interval = 24 * 60 * 60 * 1000;
var nextDay = new Date(time + interval);
function padding(number) {
return number < 10 ? "0" + number : "" + number;
}
function format(date) {
var year = date.getFullYear(),
month = date.getMonth(),
theDate = date.getDate(), //change the variable name
hour = date.getHours(),
minute = date.getMinutes();
return padding(year) + "-"
+ padding(month + 1) + "-"
+ padding(date) + " "
+ padding(hour) + ":"
+ padding(minute);
}
console.log(format(nextDay));
C.Unbay
2017-09-06