倒计时方式代码-uniapp,js

本文介绍如何在uni-app中使用自定义倒计时组件,实现不同样式和功能的倒计时显示,包括基本使用、样式定制及原生JS倒计时实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

uni-app:需导入组件

<template>
	<view>
		<!-- 示例1 -->
		<view>
			<uni-countdown :timer="timer1"></uni-countdown>
		</view>
		<!-- 示例2:绿底白字 -->
		<view style="background:#00B26A; padding:50upx 0;">
			<!-- 割符号颜色splitorColor -->
			<uni-countdown :timer="timer2" borderColor="#FFFFFF" splitor-color="#FFF" fontColor="#FFFFFF" bgrColor="none"></uni-countdown>
		</view>
	</view>
</template>
<script>
	import uniCountdown from "../../components/uni-countdown.vue";
	export default {
		data() {
			// Date 对象用于处理日期和时间
			var dateObj = new Date();
			// getTime() 方法可返回距 1970 年 1 月 1 日之间的毫秒数。
			var currentTime = dateObj.getTime();
			var timer1 = this.formatDateTime((currentTime + 1000 * 2000));
			//2秒   60x60=1h  返回格式为日期或时间的表达式。formatDateTime
			var timer2 = this.formatDateTime((currentTime + 1000 * 3601));    
												
			return {
				title: '倒计时',
				timer1: timer1,
				timer2: timer2,
			}
		},
		components: {
			uniCountdown
		},
		methods: {
			formatDateTime(inputTime) { //时间戳 转 YY-mm-dd HH:ii:ss 
				var date = new Date(inputTime);
				var y = date.getFullYear();
				var m = date.getMonth() + 1;
				m = m < 10 ? ('0' + m) : m;
				var d = date.getDate();
				d = d < 10 ? ('0' + d) : d;
				var h = date.getHours();
				h = h < 10 ? ('0' + h) : h;
				var minute = date.getMinutes();
				var second = date.getSeconds();
				minute = minute < 10 ? ('0' + minute) : minute;
				second = second < 10 ? ('0' + second) : second;
				return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
			}
		},
	}
</script>

<style>
	
	
</style>

原生js写法

【方法1-距离下个时期所剩时间段】

<!doctype html>
<html  lang="en">
<head>
<meta charset="utf-8">
<script type="text/javascript">
    function dayBetween(){
        var today = new Date();
        // var enday = new Date(2019,03,05,0,0,0,0);  //或 new Date("2016/12/31 0:0:0");
		var enday = new Date("2019/3/5 0:0:0");
        var between = enday-today;
       // console.log("between"+between+"\n");
        var sec = Math.floor(between/1000);
        var day = Math.floor((Math.floor((Math.floor(sec/60))/60))/24); 
        var hours = (Math.floor((Math.floor(sec/60))/60))%24;
        var minutes = (Math.floor(sec/60))%60 ;
        var seconds =  sec%60;
       // console.log("result:"+day+"天"+hours+"时"+minutes+"分"+seconds+"秒");
       var t = document.getElementById("time");
       t.innerHTML = "离2019年3月5日0点还剩:"+"<b>"+day+"天"+hours+"时"+minutes+"分"+seconds+"秒"+"</b>";
    }
    window.onload = function(){
      setInterval(dayBetween,1000);
    };
</script>
</head>
<body>
<p id="time"></p>
</body>
</html>

【方法二-1h倒计时】

<html>
<head>
<meta charset="UTF-8">
<title>简单时长倒计时</title>
<SCRIPT type="text/javascript">        
            var maxtime = 60 * 60; //一个小时,按秒计算,自己调整!   
            function CountDown() {
                if (maxtime >= 0) {
                    minutes = Math.floor(maxtime / 60);
                    seconds = Math.floor(maxtime % 60);
                    msg = "距离结束还有" + minutes + "分" + seconds + "秒";
                    document.all["timer"].innerHTML = msg;
                    if (maxtime == 5 * 60)alert("还剩5分钟");
                        --maxtime;
                } else{
                    clearInterval(timer);
                    alert("时间到,结束!");
                }
            }
            timer = setInterval("CountDown()", 1000);                
        </SCRIPT>
</head>
<body>
<div id="timer" style="color:red"></div>
<div id="warring" style="color:red"></div>
</body>
</html>
### 实现 UniApp 中的倒计时效果 在 UniApp 中实现倒计时功能可以通过多种方式完成,主要依赖于 Vue 的响应式特性以及 JavaScript 的定时器机制。对于具体的实现方法,在页面或组件中可以采用 `onMounted` 生命周期钩子来启动倒计时逻辑[^1]。 #### 使用 onMounted 启动倒计时 当希望在页面加载完成后立即开始倒计时时,可以在 `<script setup>` 或者选项 API 下使用 `onMounted()` 钩子函数初始化倒计时: ```javascript import { ref, onMounted } from 'vue'; export default { setup() { const timeLeft = ref('00:00'); function startCountdown(endTime) { let timer; function updateCountdown() { const now = new Date().getTime(); const distance = endTime - now; if (distance < 0) { clearInterval(timer); timeLeft.value = "EXPIRED"; } else { const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); const seconds = Math.floor((distance % (1000 * 60)) / 1000); timeLeft.value = `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`; } } updateCountdown(); // 更新一次时间显示 timer = setInterval(updateCountdown, 1000); // 每隔一秒更新剩余时间 } onMounted(() => { const countdownEndTime = new Date("Dec 31, 2023 23:59:59").getTime(); startCountdown(countdownEndTime); }); return { timeLeft, }; }, }; ``` 此代码片段展示了如何定义一个简单的倒计时逻辑并将其绑定到视图中的变量上。通过计算目标结束时间和当前时间之间的差值,并每隔一秒钟刷新这个差异直到达到零为止。 #### 自定义样式与交互设计 考虑到不同应用场景下的视觉需求各异,开发者可以根据实际项目的UI/UX要求调整倒计时组件的外观和行为。这可能涉及到修改 CSS 样式表或是利用动画框架增强用户体验[^2]。 #### 应用于电商场景 特别是在电商平台开发过程中,倒计时经常被用来营造紧迫感以促进销售转化率。因此,确保倒计时能够稳定运行并且易于维护非常重要。上述提到的技术方案不仅适用于标准网页端应用,同样也适合移动设备上的小程序环境[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值