倒计时功能

小程序倒计时的显示有两种方法:

一种是列表式的,另外一种是详情式

(1)列表式

test.wxml

<block wx:for="{{productItems}}">
<view class="surplustime">距结束 {{item.showTimeStr}}</view>
</block>
 
test.js
 
Page({
/**
* 页面的初始数据
*/
data: {
productItems:
[
{ id: 1, img: "../Images/product1.jpg", text: "xxxxx", price: "399.00", decoration: "562.00", time: "2018/03/14 22:11:11",showTimeStr:"" },
{ id: 2, img: "../Images/product2.jpg", text: "xxxxx", price: "265.00", decoration: "488.00", time: "2018/03/14 20:11:11", showTimeStr: ""}
],
},
 time:表示活动截止时间--showTimeStr:表示剩余时间 格式为时:分:秒
 
/**
* 生命周期函数--监听页面显示(计算出剩余时间并显示
*/
onShow: function () { 
  
  let that = this;

  function count_down() {
 
    var maxlength = that.data.productItems.length; //产品数量

    for (var i = 0; i < maxlength; i++) {

      var item = that.data.productItems[i];
      var time = (new Date(item.time)).getTime() - new Date().getTime();

      if (time <= 0) {
        item.showTimeStr = "已经截止";
      } else {
        item.showTimeStr = date_format(time);
      }
    }
    //重新赋值
    that.setData({
      productItems: that.data.productItems
    })
  }
  count_down();
  setInterval(count_down, 1000);//每一秒调用一次
}
 
// 时间格式化输出,如03:25:19   每1s都会调用一次
function date_format(micro_second) {
// 秒数
var second = Math.floor(micro_second / 1000);
// 小时位
var hr = Math.floor(second / 3600);
// 分钟位
var min = fill_zero_prefix(Math.floor((second - hr * 3600) / 60));
// 秒位
var sec = fill_zero_prefix((second - hr * 3600 - min * 60));// equal to => var sec = second % 60;
 
return hr + ":" + min + ":" + sec;
}

// 位数不足补零
function fill_zero_prefix(num) {
return num < 10 ? "0" + num : num
}
 
效果图

(2)商品详情式显示

----待续

原文地址:https://www.cnblogs.com/wulala9/p/8566045.html