为什么不声明setDate?如何让它接受timeMachine(1,0,0)和timeMachine(1,“1,1”,11)
var timeMachine=function (yearsLater,monthsLater,daysLater) {
var dateObject=new Date();
dateObject=dateObject.getDate();
var newDate=new Date();
newDate.setDate(dateObject.getDate()+daysLater);
newDate.setMonth(dateObject.getMonth()+monthsLater);
newDate.setYear(dateObject.getYear()+yearsLater)
console.log(newDate);
}
timeMachine()发布于 2016-01-07 06:22:55
getDate()返回月份的第几天,因此在函数的第二行中,您将dateObject从日期更改为数字。看起来这一行应该删除。
在稍后的函数中,当您尝试使用dateObject.getDate()时,它会失败,因为dateObject现在是一个.getDate()不适用的数字。
getYear()方法返回年份减1900 (现在是116),您可以使用getFullYear()方法代替它来获得所需的函数。
所有这些更改就绪后,代码将如下所示:
var timeMachine=function (yearsLater,monthsLater,daysLater) {
var dateObject=new Date();
var newDate=new Date();
newDate.setDate(dateObject.getDate()+daysLater);
newDate.setMonth(dateObject.getMonth()+monthsLater);
newDate.setYear(dateObject.getFullYear()+yearsLater);
console.log(newDate);
}
timeMachine(1, 1, 1);我不明白你如何让你的函数接受像“一月”这样的月份名称作为monthsLater参数……3个月后有意义,“一月”几个月后似乎没有。
如果您已经有了一个想法,但又需要弄清楚如何将月份名称转换为数字,这里有一些聪明的解决方案(如果类型为monthsLater ===“string”,请使用其中一种方法) Easiest way to convert month name to month number in JS ? (Jan = 01)
https://stackoverflow.com/questions/34643885
复制相似问题