这个问题出在哪里

这个问题出在哪里

var year=prompt("请输入入职年份");

var month=prompt("请输入入职月份");

var day=prompt("请输入入职日期");

function getWorkTime(year,month,day){

var date=new Date();

var y=date.setFullYear(year);

var m=date.setMonth(month);

var d=date.setDate(day);

var newY=date.setFullYear(y.getFullYear()+3);

document.write("员工的入职时间为"+y.getFullYear()+"年"+(m.getMonth()+1)+"月"+d.getDate()+"日"+"<br />");

document.write("合同到期时间为"+newY.getFullYear()+"年"+(m.getMonth()+1)+"月"+d.getDate()+"日");

}

getWorkTime(year,month,day);


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕糖 2018-12-19 14:38:53

同学你好,比如输入的是3,实际表达的是3月,但是计算的时候因为是0-11(0表示1月,11表示12月),所以会按照是4月显示。所以要减去1,为2的时候,才会按照实际想表达的3月进行计算。

所以这里要减去1。

希望能帮助到你,欢迎采纳。

祝学习愉快!

好帮手慕夭夭 2018-12-19 10:41:04

你好同学 ,如下红框中是中文符号 ,导致报错 .

http://img1.sycdn.imooc.com//climg/5c19b0060001e9f005110052.jpg

另外 , 像使用date.setFullYear(year);这样设置的日期返回的是具体的时间 ,而不是一个对象 , 而getFullYear()这样的方法要用在时间对象上 , 所以这里逻辑是不对的 . 可以如下修改与优化:

我们弹窗输入的年月日可以直接使用更简便

http://img1.sycdn.imooc.com//climg/5c19afb300012f8411840384.jpg

祝学习愉快 ,望采纳 .

好帮手慕糖 2018-12-19 10:39:49

同学你好,1、如下,“(”是在中文状态下输入的,应换为英文状态下的。

http://img1.sycdn.imooc.com//climg/5c19adeb0001e09305630043.jpg

2、使用prompt输入的是字符串,建议:可以转换下。月份的计算是0-11,建议:输入的月份可以减1。

http://img1.sycdn.imooc.com//climg/5c19ae270001c9d606740222.jpg

3、函数中的内容有思路有点乱,建议:可以参考如下,

(1)通过输入的年月日,我们获取三年后的new Date对象。

(2)输出的入职日期把输入的日期输出即可,注意:月份应该加1;

(3)输出的到期时间,可以通过我们获取的new Date来获取年、月、日,注意:月份要加1,例:

http://img1.sycdn.imooc.com//climg/5c19aebd0001cb6d14050379.jpg

希望能帮助到你,欢迎采纳。

祝学习愉快!

  • 提问者 七柒咕4029419 #1
    月份的计算是0-11,建议:输入的月份可以减1。为什么是减1呢 不应该是加一么
    2018-12-19 14:32:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师