时间更改

需求:

点击研究周期的年月日,结束时间对应加减年月日


借助插件:moment.js. moment.js 是一个 JavaScript 日期处理类库,用于解析、检验、操作、以及显示日期


我最初的做法:

1、把结束时间先存起来

2、分别监听研究周期年月日的input,当年增加就给结束时间加上年,如果月也增加,把年先保存起来赋值给结束时间,拿这个新的结束时间给月作为结束时间来加月,以此类推

3、这样做会导致加了年之后再加月,又回来加年,计算就会出乱

粘贴一段很恶心的代码

//最初的结束时间
        var initEndTime = $("[name='endTime']").val();
        //改变日的结束时间
        var dayEndTime; 
        //改变月的结束时间
        var monthEndTime;
        //改变年的结束时间
        var yearEndTime;

        $("#researchCycle input").on("change",function(){
            if($(this).attr("name") === "researchDay" ){
                if(dayEndTime){
                    var now = moment(dayEndTime);
                }else{
                    var now = moment(initEndTime);
                }
                var thisVal = $(this).val();
                var changTime = parseInt( thisVal - 最初天数);
                now.add(changTime,'d')
                var end = now.format("YYYY-MM-DD HH:mm:ss").toString()
                monthEndTime = end;
                yearEndTime = end;
                $("[name='endTime']").val(end);
            }
            if($(this).attr("name") === "researchMonth"){
                if(monthEndTime){
                    var now = moment(monthEndTime);
                }else{
                    var now = moment(initEndTime);
                }
                var thisVal = $(this).val();
                var changTime = parseInt( thisVal - 最初月数);
                now.add(changTime,'M')
                var end = now.format("YYYY-MM-DD HH:mm:ss").toString()
                yearEndTime = end;
                dayEndTime = end;
                $("[name='endTime']").val(end);
            }
            if($(this).attr("name") === "researchYear"){
                if(yearEndTime){
                    var now = moment(yearEndTime);
                }else{
                    var now = moment(initEndTime);
                }
                var thisVal = $(this).val();
                var changTime = parseInt( thisVal - 最初年数);
                now.add(changTime,'y')
                var end = now.format("YYYY-MM-DD HH:mm:ss").toString()
                dayEndTime = end;
                monthEndTime =end;
                $("[name='endTime']").val(end);


最终的做法:

经过了各种琢磨,各种放弃,发现自己脑袋不会转弯,那么简单的问题想那么复杂

解决思路:

1、开始时间是不变的,结束时间 = 周期 + 开始时间

2、定义一个年月日的变量,监听研究周期的input,不管哪个改变都给结束时间加上对应的年月日


//周期改变结束时间也跟着改变
            var startTime = $("[hhitdataname='startTime']").val();

            $("#researchCycle input").on("change",function(){
                var now = moment(startTime);
                var curYearVal = $("[name='researchYear']").val();
                var curMonthVal = $("[name='researchMonth']").val();
                var curDayVal = $("[name='researchDay']").val();

                now.add(curYearVal,'y')
                now.add(curMonthVal,'M')
                now.add(curDayVal,'d')

                var end = now.format("YYYY-MM-DD HH:mm:ss").toString()
                $("[name='endTime']").val(end);
            })
   


四行代码,就替代了之前的一堆,想法真的很可怕,算法更可怕


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值