为什么没有声明设置日期?如何让它接受时间机器(1,0,0)和时间机器(1,"January",11)



为什么没有声明setDate?我如何让它接受timeMachine(1,0,0)AND timeMachine(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()

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);

我不明白如何让函数接受像"January"这样的月份名称作为monthsLater参数。。。3个月后有意义,"一月"几个月后似乎没有。

如果你有一个想法,但需要弄清楚如何将月份名称转换为数字,这里有一些聪明的解决方案(如果typeof months,请使用其中一种方法Later==="string")在JS中将月份名称转换成月份编号的最简单方法?(Jan=01)

最新更新