uniapp u-view 两个时间戳的差 倒计时

该文章介绍了如何在Vue项目中使用uViewUI库创建一个自定义倒计时组件。组件通过接收结束时间并转换为时间戳来计算剩余时间,同时提供了事件监听功能,例如在倒计时结束时触发父组件的方法。

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

参考uView倒计时

1、常规操作:自定义倒计时组件 ui-count-down

<template>
	<view class="countdown-view">
		<u-count-down @change="finishDown" :time="startTimeDown" :startTime="startTime" format="HH:mm:ss">
		</u-count-down>
	</view>
</template>
<script>
export default {
		props: {
			startTime: {
				type: [Number, String],
				default: 0,
			},
		},
		data() {
			return {
				startTimeDown: '' //倒计时时间戳
			}
		},
		mounted() {
			this.intervalTime(this.startTime)
		},
		methods: {
			//日期转时间戳
			timeProcessing(timeDate) {
				// let timeDate = "2019-06-24 11:08:48"
				let Time = new Date(timeDate);
				// console.log(Time) //Mon Jun 24 2019 11:08:48 GMT+0800 (中国标准时间)
				let timestemp = Time.getTime();
				return timestemp
			},
			//获取时间差
			intervalTime(endTime) {
				// var timestamp=new Date().getTime(); //计算当前时间戳
				var date1 = (Date.parse(new Date())) / 1000; //计算当前时间戳 (毫秒级)
				var date2 = (this.timeProcessing(endTime)) / 1000; //1688817600; //计算当前时间戳 (毫秒级)
				// var date2 = endTime; //结束时间
				// var date3 = date2.getTime() - date1.getTime(); //时间差的毫秒数
				var date3 = (date2 - date1) * 1000; //时间差的毫秒数
				this.startTimeDown = date3
                //触发当前组件上的 事件,让父类能够监听到
				this.$emit('countDownTime', date3)
				return
			},
		}
	}
</script>
<style lang="scss">
	.countdown-view {
		margin-left: 10rpx;
	}
</style>

2、引用自定义组件

<ui-count-down @finishDown="finishDown(index)" :startTime="2023-07-17 18:02:00">
</ui-count-down>

@finishDown:让父类监听引用组件倒计时的相关操作

//倒计时结束
finishDown(index) {
	//0:未开播 1:待开播 2:直播中 3:直播结束
	this.liveList[index].status = 2
}

在Android中,将HH-mm-ss格式的时间转换为时间戳(通常指的是从1970年1月1日00:00:00 UTC到当前时间的毫秒数)需要先将HH-mm-ss格式的时间解析为一个`Date`对象,然后将这个`Date`对象转换为时间戳。这里提供一个简单的例子来说明如何进行这种转换: ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TimeUtils { public static long convertHHmmssToTimestamp(String timeHHmmss) { SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); try { Date date = format.parse(timeHHmmss); return date.getTime(); } catch (ParseException e) { e.printStackTrace(); return -1; // 解析失败时返回-1或其他错误码 } } } ``` 在上面的代码中,`convertHHmmssToTimestamp`方法接受一个符合HH-mm-ss格式的字符串,然后使用`SimpleDateFormat`进行解析,最后通过调用`Date`对象的`getTime()`方法得到时间戳。注意,这里的`SimpleDateFormat`是假设你的时间字符串是本地时间。如果你的时间是UTC时间,需要在格式字符串中添加`'Z'`(代表UTC时间)。 在倒计时应用中,你通常会用这个时间戳与当前时间戳计算,以得到剩余的时间长度。以下是一个简单的倒计时功能实现: ```java public class CountdownTimer { private long targetTimestamp; // 目标时间戳 private Handler handler = new Handler(); private Runnable runnable = new Runnable() { @Override public void run() { long currentTime = System.currentTimeMillis(); long remainTime = targetTimestamp - currentTime; if (remainTime <= 0) { // 倒计时结束 handler.removeCallbacks(runnable); } else { // 更新UI或执行其他操作 updateUI(remainTime); // 每秒更新一次 handler.postDelayed(this, 1000); } } }; public void startCountdown(String timeHHmmss) { targetTimestamp = TimeUtils.convertHHmmssToTimestamp(timeHHmmss); handler.post(runnable); } private void updateUI(long remainTime) { // 更新UI的代码,例如显示剩余时间 } } ``` 在上面的`CountdownTimer`类中,我们定义了一个`runnable`来执行倒计时逻辑,每秒更新一次剩余时间,并通过`Handler`的`postDelayed`方法来周期性执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值