当前位置:网站首页>微信小程序实现活动倒计时
微信小程序实现活动倒计时
2022-08-04 05:38:00 【苏苏就是小苏苏】
1.实现效果
2.实现步骤
1.获取指定截止时间与当前时间的毫秒,即为剩余毫秒值,若剩余毫秒值小于0则返回0。
2.格式化当前毫秒,自动补0,转换成一个数组,格式为[‘天’,‘时’, ‘分’, ‘秒’]。
eg:
[364,11,30,07]
3.可进一步将[‘天’,‘时’, ‘分’, ‘秒’]拆分成[[,.],‘[,]’, ‘[,]’, ‘[,]’]。
eg:
[[3,6,4],[1,1],[3,0],[0,7]]
3.实现代码
<view class="flex-row time-box j_c">
<view class="time-item">{
{
left_time_list[0]}}</view>天
<view class="time-item">{
{
left_time_list[1]}}</view>时
<view class="time-item">{
{
left_time_list[2]}}</view>分
<view class="time-item">{
{
left_time_list[3]}}</view>秒
</view>
<view class="flex-row time-box j_c ">
<view class="flex-row">
<block wx:for="{
{left_time_list_date[0]}}" wx:key="list">
<view class="time-item1">{
{
item}}</view>
</block>
<text>天</text>
</view>
<view class="flex-row">
<block wx:for="{
{left_time_list_date[1]}}" wx:key="list">
<view class="time-item1">{
{
item}}</view>
</block>
<text>时</text>
</view>
<view class="flex-row">
<block wx:for="{
{left_time_list_date[2]}}" wx:key="list">
<view class="time-item1">{
{
item}}</view>
</block>
<text>分</text>
</view>
<view class="flex-row">
<block wx:for="{
{left_time_list_date[3]}}" wx:key="list">
<view class="time-item1">{
{
item}}</view>
</block>
<text>秒</text>
</view>
</view>
/* pages/actualPage/countdown/index.wxss */
.time-box {
font-size: 26rpx;
color: #EAA81B;
margin-bottom: 40rpx;
border-radius: 20rpx;
padding: 20px;
background: #fff;
margin: 20rpx;
}
.time-item {
width: 60rpx;
height: 40rpx;
background: linear-gradient(90deg, #FFEBB1 0%, #FFDB8F 100%);
border-radius: 4rpx;
font-size: 24rpx;
text-align: center;
line-height: 40rpx;
margin: 0 20rpx;
}
.time-item1 {
width: 30rpx;
height: 40rpx;
background: linear-gradient(90deg, #FFEBB1 0%, #FFDB8F 100%);
border-radius: 4rpx;
font-size: 24rpx;
text-align: center;
line-height: 40rpx;
margin: 0 10rpx;
}
Page({
data: {
left_time: '', //活动剩余时间的秒数
timer: '', //倒计时定时器
left_time_list: [], //剩余秒数转换 天,小时 分 秒
left_time_list_date: []
},
onShow: function () {
this.getLeftTime('2023/08/03 11:20:00')
},
/** * 定时器,计算剩下时间 * @param {*} end_time */
getLeftTime(end_time) {
let left_time = this.getTimestap(end_time);
this.initDate(left_time)
this.data.timer = setInterval(() => {
if (left_time-- === 0) {
this.setData({
left_time: 0,
left_time_list: this.formatSeconds(0)
})
clearInterval(this.data.timer)
} else {
this.initDate(left_time)
}
}, 1000);
},
/** * 初始化数据 */
initDate(e) {
let left_time_list = this.formatSeconds(e),
left_time_list_date = this.formatDate(JSON.stringify(left_time_list));
this.setData({
left_time: e,
left_time_list,
left_time_list_date
})
},
/** * 获取指定时间-当前时间的秒数 * @param {*} end_time */
getTimestap(end_time) {
// 当前时间
var currentTime = parseInt(new Date().getTime() / 1000);
// 未来时间
var futureTime = parseInt(new Date(end_time.replace(/-/g, '/')).getTime() / 1000); //ios无法解析
return futureTime <= currentTime ? 0 : futureTime - currentTime;
},
/** * 毫秒-天-时-分-秒 * @param {*} value */
formatSeconds(value) {
let time = [],
day = parseInt(value / 86400),
hour = parseInt((value % 86400) / 3600),
min = parseInt(((value % 86400) % 3600) / 60),
sec = parseInt(((value % 86400) % 3600) % 60);
time[0] = day > 0 ? this.addZero(day) : this.addZero(0);
time[1] = hour > 0 ? this.addZero(hour) : this.addZero(0);
time[2] = min > 0 ? this.addZero(min) : this.addZero(0);
time[3] = sec > 0 ? this.addZero(sec) : this.addZero(0);
return time;
},
/** * 拆分数组-天-时-分-秒 * @param {*} e */
formatDate(e) {
let list = JSON.parse(e);
for (let i = 0; i < list.length; i++) {
list[i] = list[i].toString().split('');
}
return list;
},
/** * 补0 * @param {*} num */
addZero(num) {
return num < 10 ? "0" + num : num;
},
onUnload() {
if (this.data.timer) {
console.log('销毁计时器')
clearInterval(this.data.timer)
}
}
})
4.更多小程序相关,关注公众号 苏苏的bug,更多小程序demo,尽在苏苏的码云如果对你有帮助,欢迎你的star+订阅!
边栏推荐
- VS 2017编译 QT no such slot || 找不到*** 问题
- 如何画好业务架构图。
- Faster RCNN原理及复现代码
- 自适应迁移学习核极限学习机用于预测
- Error occurred while trying to proxy request项目突然起不来了
- Different lower_case_table_names settings for server (‘1‘) and data dictionary (‘0‘) 解决方案
- av_read_frame 阻塞,基于回调的解决办法
- YOLOv3详解:从零开始搭建YOLOv3网络
- 狗都能看懂的变化检测网络Siam-NestedUNet讲解——解决工业检测的痛点
- MATLAB 的ICEEMDAN分解代码实现
猜你喜欢
RuntimeError: You called this URL via POST, but the URL doesn‘t end in a slash and you have APPEND_S
Database Skills: Organize SQL Server's Very Practical Scripts
SegNet——论文笔记
基于子空间结构保持的迁移学习方法MLSSM
为什么不使用VS管理QT项目
Faster RCNN原理及复现代码
2DCNN, 1DCNN, BP, SVM fault diagnosis and result visualization of matlab
数据库技巧:整理SQLServer非常实用的脚本
Detailed explanation of DenseNet and Keras reproduction code
MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案
随机推荐
ThreadLocal内存泄漏问题讲解
MAML原理讲解和代码实现
如何画好业务架构图。
Database: Organize Four Practical SQL Server Scripting Functions
Microsoft Store 微软应用商店无法连接网络,错误代码:0x80131500
如何用matlab做高精度计算?【第一辑】
SQL存储过程详解
秒杀系统设计
av_read_frame 阻塞,基于回调的解决办法
用手机也能轻松玩转MATLAB编程
微软电脑管家2.0公测版体验
Time Series Forecasting Based on Reptile Search RSA Optimized LSTM
如何用matlab做高精度计算?【第二辑】
ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法
[漏洞问题] log4j漏洞 关于2.17.0升级到2.18.0 方案
元素的增删克隆以及利用增删来显示数据到页面上
狗都能看懂的Vision Transformer的讲解和代码实现
基于爬行动物搜索RSA优化LSTM的时间序列预测
ffmpeg打开rtsp流应该设置的几个参数
网络技巧:教你给路由器装上电池,断电照样可以上网!