时间更改

xiaoxiao2021-02-28  21

需求:

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

借助插件: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);             })   

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

转载请注明原文地址: https://www.6miu.com/read-1000327.html

最新回复(0)