时间自动读秒效果。微信小程序实现页面显示实时日期和时间

演示效果: 

定时器

原理

通过开启一个定时器,每隔一秒执行一次获取当前时间的方法函数并实时渲染到前端页面

一、格式化当前时间的方法

export const getTimeNow = () => {
  let dateTime
  let yy = new Date().getFullYear()
  let mm = new Date().getMonth() + 1
  let dd = new Date().getDate()
  let hh = new Date().getHours()
  let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() :
    new Date().getMinutes()
  let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() :
    new Date().getSeconds()
  dateTime = `${yy}-${mm}-${dd} ${hh}:${mf}:${ss}`;
  return dateTime
}

通过调用Date()函数获取当前时间戳。使用模板字符串将获取到的年月日拼接成我们习惯的形式

二、XML代码

<!-- 显示时间 -->

<view class="time">

{{time}}

</view>

三、JavaScript代码

data: {
    // 显示的时间
    time:'',
    // 定时器的开关
    timer: ''
  },
  
  //页面首次加载会将时间赋给time
    /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    let that = this
    that.setData({
      time:getTimeNow()
    })
  },
  
    /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const that = this
    this.data.timer = setInterval(function(){
      // 实时调用时间函数getTimeNow获取最新时间
      const Time = getTimeNow()
      that.setData({
        time:Time
      })
      console.log("定时器还开着喔~~~");
    },1000)
  },
  
    /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
  // 当关闭当前页面时关闭定时器,不然会一直开着,影响性能
    clearInterval(this.data.timer)
  },

注意点:

1、在 onReady()生命周期函数中当页面渲染完成即刻将获取到的当前时间赋给time值。在使用 this.setData()函数时,注意 this 的指向问题,需要将 that=this 。这样才不会报错

2、 在页面加载设置一个定时器,并使用 timer 定时器开关存储起来

3、 在页面卸载函数中清除当前开启的定时器,不然会一直在执行。严重影响性能消耗

错误展示:

this.setData()函数报错,使用 that=this 重新指向。这是因为 this关键字的指向可能会发生变化,使用that=this的方式可以保存this的指向,确保在后续代码中能够正确访问和使用

常见情况:在一个回调函数或异步操作中使用this.setData()时,this的指向会发生改变,指向的不是原来的上下文对象,导致无法正确执行setData()函数。

一定要在监听页面卸载函数中将定时器关掉,不然就算你退出当前页面他也一直在开着。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自拍拍到鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值