了解更多开源请访问:51CTO开源基础软件社区https://ost.51cto.com前言我一直在学习了一段时间HarmonyOSArkUI(JS)。为了检验自己的成绩,根据自己现在掌握的FA相关知识,写了一个简单的定时器组件,日常开发中可能会遇到。该组件基于JS扩展类Web开发范式开发。可以通过传入时间参数实现简单的定时功能,也可以传入其他参数显示手动控制定时和手动选择时间功能。效果展示道具**注:**当只需要计时时,可以直接传入时间(mSec、sec、minute、hour、targetTime、fromTime),然后传入属性autoStart='true'进行自动计时,其中fromTime,targetTime不能与前面四个unit属性共享。参数说明类型默认值mSec倒计时毫秒数,如3000毫秒Number0sec倒计时秒数,如100秒Number0minute倒计时分钟数,如80分钟Number0hour倒计时小时数,如25小时Number0targetTime目标时间,如"2022-6-2110:00:00"String''fromTime开始时间,如"2022-6-2110:00:00"String''autoStart自动计时Booleanfalsecontrol显示手动控制图标BooleanfalseshowAll显示时间选择区,点击数字打开Booleanfalse毫秒打开毫秒级计时Booleanfalse实现代码1.首先将传入或设置的时间转换为毫秒,格式化字符串显示timeToString(value){//毫秒时间转换letsecondTime=parseInt(value/1000),//秒分钟时间=0,//minutehourTime=0,//hourmillisecond=Math.floor((value%1000)/10)if(secondTime>60){//如果秒大于60,将秒转为整数分钟时间=parseInt(secondTime/60);//得到分钟,除以60得到整数,得到整数分secondTime=parseInt(secondTime%60);//得到秒,得到秒,得到秒integersecondif(minuteTime>60){//如果分钟大于60,将分钟转换成小时hourTime=parseInt(minuteTime/60);//得到小时,分钟除以60,得到一个整数hourminuteTime=parseInt(minuteTime%60);//获取小时后的分钟数,将分钟数除以60得到分钟数}}letresult="";如果(这。毫秒){//毫秒计时this.delay=30;结果=“:”+this.sizeFormat(毫秒)+“”+结果;}结果=""+this.sizeFormat(secondTime)+""+结果;if(minuteTime>=0){result=""+this.sizeFormat(minuteTime)+":"+result;}if(hourTime>=0){result=""+this.sizeFormat(hourTime)+":"+result;}//保存时间数据this.countDownTimeText=result;this.hourTime=hourTime;this.minuteTime=分钟时间;this.secondTime=secondTime;returnresult;},//格式化,在sizeFormat(value)前加0{letval=parseInt(value)returnval>=10?''+val:'0'+val},2.启动定时器startTiming(){if(this.countDownTime&&this.order==false){//倒计时this.timer=setInterval(()=>{this.timeToString(this.countDownTime);this.countDownTime=this.countDownTime-this.delay;if(this.countDownTime<=0){this.countDownTimeText='00:00:00';clearTimeout(this.timer);}},this.delay)}else{//顺序计算时this.order=true;this.timer=setInterval(()=>{this.timeToString(this.countDownTime);this.countDownTime=this.countDownTime+this.delay;},this.delay)}}3、hml绑定数据
