HarmonyOS 鸿蒙Next TextTime组件onTime(utc、elapsedTime)里面的2个参数结果不正确,比正确数据相差10倍
HarmonyOS 鸿蒙Next TextTime组件onTime(utc、elapsedTime)里面的2个参数结果不正确,比正确数据相差10倍
如图,设置一个TextTime倒计时,startTime为点击开始时记录的时间戳,utc、elapsedTime为TextTime中onTime事件中的参数值。运行时发现倒计时为0后,结果如下图:
根据官方文档中对参数的解释:
onTimer
onTimer(event: (utc: number, elapsedTime: number) => void)
时间文本发生变化时触发。锁屏状态和应用后台状态下不会触发该事件。 设置高精度的format(SSS、SS)时,回调间隔可能会出现波动。
卡片能力:
从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API:
从API version 11开始,该接口支持在元服务中使用。
系统能力:
SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
utc | number | 是 | Linux时间戳,即自1970年1月1日起经过的时间,单位为设置格式的最小单位。 |
elapsedTime | number | 是 | 计时器经过的时间,单位为设置格式的最小单位。 |
存在如下问题:
- utc也是时间记录的时间戳,经过3秒后的时间戳比点击开始按钮的时间戳还小,时间倒退?
- elapsedTime是计时器经过的时间,3秒的计数器该数据应该为3000,但是结果是304?
对比发现,utc、elapsedTime的结果都比正确的结果相差了10倍,不知道是这个版本的问题还是什么原因。
版本号:
- DevEco Studio NEXT Release
- Build #DS-233.14475.28.36.503900
- 构建版本:5.0.3.900, built on October 8, 2024
- Windows 11.0
源代码如下:
@Entry
@Component
struct LightPage {
msg:string='定时开关'
@State lightFlag:boolean=false
@State startTime:number=0 //点击开始的时间
controller:TextTimerController=new TextTimerController()
@State utc:number=0
@State elapsedTime:number=0
build() {
Column() {
Text(this.msg)
.fontSize(48)
.fontWeight(FontWeight.Bold)
.margin({top:30})
TextTimer({isCountDown:true,count:3000,controller:this.controller})
.format("mm:ss.SS")
.fontSize(24)
.margin({top:20,bottom:30})
.onTimer((utc:number,elapsedTime:number)=>{
this.utc=utc
this.elapsedTime=elapsedTime
})
Column({space:30}){
Text('startTime='+this.startTime)
.fontSize(20)
.fontColor(Color.Red)
Text('utc='+this.utc)
.fontSize(20)
.fontColor(Color.Green)
Text('utc-startTime='+(this.utc-this.startTime))
.fontSize(20)
.fontColor(Color.Blue)
Text('elapsedTime='+this.elapsedTime)
.fontSize(20)
.fontColor(Color.Brown)
}
.width('80%')
.height('60%')
Button('开始')
.width('70%')
.onClick(()=>{
this.lightFlag=!this.lightFlag
this.startTime=new Date().getTime()
console.log('MyTag startTime=',this.startTime)
if (this.lightFlag){
this.controller.start()
} else {
this.controller.reset()
}
})
}
.height('100%')
.width('100%')
}
}
更多关于HarmonyOS 鸿蒙Next TextTime组件onTime(utc、elapsedTime)里面的2个参数结果不正确,比正确数据相差10倍的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS 鸿蒙Next TextTime组件onTime(utc、elapsedTime)里面的2个参数结果不正确,比正确数据相差10倍的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,针对Next TextTime组件的onTime(utc, elapsedTime)
方法中的两个参数结果不正确,且比正确数据相差10倍的问题,这通常可能是由于时间单位处理不当或时间计算逻辑错误引起的。
-
检查时间单位:首先确认
utc
和elapsedTime
参数的时间单位是否与你的预期一致。在鸿蒙系统中,时间参数可能以不同的单位表示(如秒、毫秒等),确保你的代码逻辑中处理这些参数时使用了正确的单位。 -
审查时间计算逻辑:检查
onTime
方法内部的时间计算逻辑,看是否有将时间值错误地放大了10倍。例如,如果某处代码不当地将时间乘以了10,就会导致结果比预期大10倍。 -
对比文档和源码:参考鸿蒙系统的官方文档,核对
Next TextTime
组件的onTime
方法参数说明,确保理解正确。同时,如果可能,查看组件的源码实现,以了解参数的实际处理过程。 -
更新和测试:确保你的鸿蒙系统环境是最新的,有时候系统更新会修复一些已知的bug。同时,在不同的设备或模拟器上测试,以排除特定环境的问题。
如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html,