为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

不负相思意 2019-05-21 17:17:33
实现一个功能:以小时计算,如活动到期时间为'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);//剩余秒
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 416 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信