老师,请检查一下代码有没有瑕疵

老师,请检查一下代码有没有瑕疵

	function input(year,month,date){
		var DQdate=new Date(2020,5,31);
		var date=new Date(year,month,date);
		var RZyear=date.getFullYear();
		var RZmonth=date.getMonth();
		var RZdate=date.getDate();
		document.write("该员工入职时间是:"+RZyear+"-"+RZmonth+"-"+RZdate+"<br>");
		document.write("该员工合同到期时间是:"+DQdate.getFullYear()+"-"+(DQdate.getMonth()+1)+"-"+DQdate.getDate()+"<br>");
	}
	var inputYear=prompt("请输入员工入职年份");
	var inputMonth=prompt("请输入员工入职月份");
	var inputDate=prompt("请输入员工入职日期");
	    input(inputYear,inputMonth,inputDate);
</script>


正在回答

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

3回答

1、这里不需要单独设置合同日期,是程序自动算的。另外,同学的代码过于复杂,建议参考:

<script>
    var inputYear = parseInt(prompt("请输入员工的入职年份")),
        inputMonth = parseInt(prompt("请输入员工的入职月份")-1),//在日期对象中月份存储是0-11,所以存储12就代表1月份,所以需要存储的时候减去1,输出的时候再增加1,否则只输出的时候增加,月份会越来越大
        inputDate = parseInt(prompt("请输入员工的入职时间"));
    function input(year, month, date) {
        var enter = new Date(year, month, date);
        var end = new Date(year + 3, month, date);
        document.write("该员工入职时间是:" + enter.getFullYear() + "-" + (enter.getMonth()+1) + "-" + enter.getDate())
        document.write("<br/>")
        document.write("该员工合同到期时间是:" + end.getFullYear() + "-" + (end.getMonth() + 1) + "-" + end.getDate())
    }

    input(inputYear, inputMonth, inputDate)
    </script>

希望可以帮到你!

  • 我问的问题是,为什么我单独设置了5月31日会得到6月1日,5月31日哪去了???老师,您没看明白我的问题吧?
    2019-04-21 15:18:40
樱桃小胖子 2019-04-21 15:51:02

老师这边测试当var DQdate=new Date(2020,5,30);的时候,结果一直是“该员工合同到期时间是:2020-6-30”

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

这说明,因为入职年份、月份、日期是不固定的,因此,这里是不能直接把合同到期的日期固定死的,这里固定死了下面的

document.write("该员工合同到期时间是:" + (date.getFullYear()+3) + "-" + (date.getMonth() + 1) + "-" + date.getDate() + "<br>");

程序解析渲染的时候,就会错乱,不能正常计算出从员工入职日期到合同到期的日期,因此会从错乱的程序中随机返回一个日期。这也就是你设置var DQdate=new Date(2020,5,30);随机返回的结果就成了2020年5月30日。而我这边测试返回的结果是2020-6-30的原因。

希望可以帮到你!


提问者 不会敲代码的小浩子 2019-04-21 14:22:37

老师,发现一个为题,我把合同到期日期设置为

var DQdate=new Date(2020,5,31);

结果是2020年6月1日

当我把合同到期日期设置为

var DQdate=new Date(2020,5,30);

结果就成了2020年5月30日


可是日历上5月有31天啊,不能输出5月31日吗?

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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