微信小程序页面实现一个 从指定时间开始递增的时间计时器

微信小程序页面实现一个 从指定时间开始递增的时间计时器

在这里插入图片描述

整体结构

wxml部分

<view class="bottom-item-content">{{ formattedTime }}</view>

js部分

Page({
  data: { ... },
  onLoad() { ... },
  onUnload() { ... },
  formatTime(seconds) { ... }
});

这是一个标准的 微信小程序页面对象定义,包含:
data:页面数据(状态)
onLoad():页面加载时执行的方法
onUnload():页面卸载(关闭)时执行的方法
formatTime(seconds):自定义方法,用于格式化秒数为 HH:mm:ss 格式

data 数据部分

data: {
  elapsedTime: 1526, // 初始时间为 00:25:26
  formattedTime: '00:25:26',
  timer: null
}

在这里插入图片描述

onLoad 生命周期函数

onLoad() {
  const timer = setInterval(() => {
    const newElapsedTime = this.data.elapsedTime + 1;
    this.setData({
      elapsedTime: newElapsedTime,
      formattedTime: this.formatTime(newElapsedTime)
    });
  }, 1000);

  this.setData({ timer });
}

🔍 功能说明:
页面加载时启动一个定时器,每 1000 毫秒(即 1 秒) 执行一次操作。
每次执行:
将 elapsedTime 增加 1 秒
调用 formatTime() 方法将新的秒数格式化成 HH:mm:ss
使用 setData() 更新页面数据,触发视图刷新
💡 注意事项:
this.setData() 是小程序更新视图的核心方法
setInterval() 返回一个定时器 ID,后续可用于清除定时器

onUnload 生命周期函数

onUnload() {
  if (this.data.timer) {
    clearInterval(this.data.timer);
  }
}

🔍 功能说明:
页面卸载(用户离开页面)时清除定时器
避免定时器继续运行造成内存泄漏或异常行为

formatTime 方法

formatTime(seconds) {
  const h = String(Math.floor(seconds / 3600)).padStart(2, '0');
  const m = String(Math.floor((seconds % 3600) / 60)).padStart(2, '0');
  const s = String(seconds % 60).padStart(2, '0');
  return `${h}:${m}:${s}`;
}

🔍 功能说明:
将传入的秒数转换为 HH:mm:ss 格式的字符串。
🧮 公式详解:
Math.floor(seconds / 3600) → 计算小时数(1小时=3600秒)
Math.floor((seconds % 3600) / 60) → 计算分钟数
seconds % 60 → 计算剩余秒数
.padStart(2, ‘0’) → 不足两位补前导 0,如 5 → 05

总结

✅ 总结
模块➡功能描述
data➡存储当前时间戳和格式化后的字符串
onLoad➡启动定时器,每秒更新时间
onUnload➡页面关闭时清理定时器
formatTime➡将秒数格式化为 HH:mm:ss 显示格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值