首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不声明setDate?如何让它接受timeMachine(1,0,0)和timeMachine(1,“1,1”,11)

为什么不声明setDate?如何让它接受timeMachine(1,0,0)和timeMachine(1,“1,1”,11)
EN

Stack Overflow用户
提问于 2016-01-07 06:16:25
回答 1查看 35关注 0票数 0

为什么不声明setDate?如何让它接受timeMachine(1,0,0)和timeMachine(1,“1,1”,11)

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2016-01-07 06:22:55

getDate()返回月份的第几天,因此在函数的第二行中,您将dateObject从日期更改为数字。看起来这一行应该删除。

在稍后的函数中,当您尝试使用dateObject.getDate()时,它会失败,因为dateObject现在是一个.getDate()不适用的数字。

getYear()方法返回年份减1900 (现在是116),您可以使用getFullYear()方法代替它来获得所需的函数。

所有这些更改就绪后,代码将如下所示:

代码语言:javascript
复制
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)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34643885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档