js实现一个倒计时处理问题

实现一个功能:以小时计算,如活动到期时间为'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,
});
}
这样写分钟和秒数不正确,该如何更正,或者有什么更好的方式实现这一功能
不负相思意
浏览 417回答 2
2回答

喵喔喔

举个栗子:当前时间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);//剩余秒
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript