程序员人生 网站导航

微信小程序 倒计时

栏目:综合技术时间:2017-01-13 11:09:41

项目需要做倒计时.
黄大哥的轮子.拿来用用.表示很顺手.
倒计时

代码:
1.index.wxml

<text style="display: block;text-align: center;font-size: 30px;color: #f60;margin-top: 50px;">
    {{clock}} {{micro_second}}
</text>

2.index.js
注释很清楚了.不多说.

/** 
 * 需要1个目标日期,初始化时,先得出到当前时间还有剩余多少秒
 * 1.将秒数换成格式化输出为XX天XX小时XX分钟XX秒 XX
 * 2.提供1个时钟,每10ms运行1次,渲染时钟,再总ms数自减10
 * 3.剩余的秒次为零时,return,给出tips提示说,已截止
 */

// 定义1个总毫秒数,以1分钟为例。TODO,传入1个时间点,转换成总毫秒数
var total_micro_second = 36 * 60 * 60 * 1000;

/* 毫秒级倒计时 */
function count_down(that) {
  // 渲染倒计时时钟
  that.setData({
    clock: date_format(total_micro_second)
  });

  if (total_micro_second <= 0) {
    that.setData({
      clock: "已截止"
    });
    // timeout则跳出递归
    return;
  }
  setTimeout(function () {
    // 放在最后--
    total_micro_second -= 10;
    count_down(that);
  }, 10)
}

// 时间格式化输出,如03:25:19 86。每10ms都会调用1次
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;
  // 毫秒位,保存2位
  var micro_sec = fill_zero_prefix(Math.floor((micro_second % 1000) / 10));

  return hr + ":" + min + ":" + sec + " " + micro_sec;
}

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

Page({
  data: {
    clock: ''
  },
  onLoad: function () {
    count_down(this);
  }
});

demo下载地址
原文地址 我的博客,欢迎评论!
CSDN微信小程序开发专栏,欢迎关注!

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐