实现一个功能:以小时计算,如活动到期时间为'20:30:50',以当前的时间考试计算离到达目标是时间剩余多少‘小时:分:秒’的功能。我的初步代码是:setTime(){constcurrentTime=newDate();constarr=this.props.data.aimTime.split(':');//输入字符串格式的时间格式,如:'20:30:45'constaimTime=3600000*(parseInt(arr[0]))+60000*(parseInt(arr[1]))+1000*(parseInt(arr[2]));//计算目标时间毫秒数constcuTime=(3600000*currentTime.getHours())+(60000*currentTime.getMinutes())+(1000*currentTime.getSeconds());//当前时间毫秒数constremainTime=aimTime-cuTime;//一天内离目标时间剩余毫秒数consthours=parseInt(arr[0])-currentTime.getHours();//剩余小时constmin=parseInt(arr[1])>0?(60-currentTime.getMinutes()+parseInt(arr[1])):60-currentTime.getMinutes();//剩余分钟,有问题感觉constsecond=parseInt(arr[2])>0?(60-currentTime.getSeconds()+parseInt(arr[2])):60-currentTime.getSeconds();//剩余秒,有问题感觉remainTime>0&&this.setState({hours:hours>9?hours:'0'+hours,min:min>9?min:'0'+min,second:second>9?second:'0'+second,});}这样写分钟和秒数不正确,该如何更正,或者有什么更好的方式实现这一功能
2 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
举个栗子:当前时间09:01:01,目标时间10:59:59按照你的计算方法,剩余秒数和分钟数是会超过60的。但是超过60,在数学上应该进位的,你少了进位操作。再举个栗子,十进制里面,计算减法计算,是个、十、百分开计算的么?附上自己的代码:consthours=parseInt(remainTime/3600/1000);//剩余小时constmin=parseInt((remainTime-(hours*3600*1000))/60/1000);//剩余分钟constsecond=parseInt((remainTime-(hours*3600*1000)-(min*60*1000))/1000);//剩余秒
添加回答
举报
0/150
提交
取消