uniapp uview 通过 “时间戳” 实现日历 点击上一日,下一日的功能组件

示例图

实现图

第一步,页面引用日期控件 步骤 (参考uniapp官方文档)
<template>
	<view class="chooise-data">
		<view class="yesterday" @click="prevDate()">
			上一日
		</view>
		<view class="chooise-box">
			<view class="date">
				<view class="calendar">
					<u-calendar v-model="show" ref="calendar" @change="change" :mode="mode" :btn-type="btnType"></u-calendar>
					<view @click="showChange()">{{result}}</view>
				</view>
				<view class="date-icon">
					<image style="width: 18px; height: 18px;" src="../static/img/home/pop-date.png" mode=""></image>
				</view>
			</view>
		</view>
		<view class="tomorrow" @click="nextDate">
			下一日
		</view>
	</view>
</template>

javasScript 部分

<script>
	export default {
		data() {
			return {
				date: '',
				show: false,
				mode: 'date',
				result: this.result,
				btnType: 'primary',
			};
		},
		beforeMount() {
			this.result = this.getcurrentday()
		},

		methods: {	
		
			// 获取当前日期展示
			getcurrentday() {
				var date = new Date();
				let year = date.getFullYear();
				let month = date.getMonth() + 1;
				let day = date.getDate();
				month = month < 10 ? "0" + month : month; //月小于10,加0
				day = day < 10 ? "0" + day : day; //day小于10,加0
				return `${year}-${month}-${day}`;
			},
			
			// 获取时间戳日期的格式
			// 因为不知道为什么,加了date初始化日期就显示为NAN,所以我写了两遍..o(╥﹏╥)o(可能是日期格式不对?)
			
			getDate(date) {
				var date = new Date(date);
				let year = date.getFullYear();
				let month = date.getMonth() + 1;
				let day = date.getDate();
				month = month < 10 ? "0" + month : month; //月小于10,加0
				day = day < 10 ? "0" + day : day; //day小于10,加0
				return `${year}-${month}-${day}`;
			},
			
			prevDate() {
				//前一天
				let odata = new Date(
					//计算当前日期 -1
					new Date(this.result).getTime() - 24 * 60 * 60 * 1000
				);
				this.result = this.getDate(odata); //格式化日期并赋值
			},
			
			nextDate() {
				//后一天
				let odata = new Date(
					new Date(this.result).getTime() + 24 * 60 * 60 * 1000
				); //计算当前日期 +1
				this.result = this.getDate(odata); //格式化日期并赋值
			},

			showChange(index) {
				this.show = true; //是否显示控件
			},
			
			change(e) {
				console.log(e)
				this.result = e.result; //当前日期显示到页面组件
			}
		},
		watch: {
			chooisedate(val) {
				this.$emit('result', this.result) //子组件传值
			}
		},
	}
</script>

Css部分(根据自己需求)

	
	.chooise-data {
		margin-top: 20px;
		display: flex;
		justify-content: space-between;
		align-items: center;
		width: 100%;
		height: 40px;
	}

	.yesterday {
		width: 80px;
		height: 35px;
		line-height: 35px;
		text-align: center;
		background-color: #2E95FF;
		border: 1px solid #FFFFFF;
		color: #FFFFFF;
		border-radius: 5px;
	}

	.tomorrow {
		width: 80px;
		height: 35px;
		line-height: 35px;
		text-align: center;
		background-color: #2E95FF;
		border: 1px solid #FFFFFF;
		color: #FFFFFF;
		border-radius: 5px;
	}

在这里插入图片描述

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现五级选择器,可以使用uView组件库中的Picker组件,并在其内部嵌套多个Picker组件。下面是一个五级选择器的示例代码: ```html <template> <view class="picker"> <picker :range="provinceList" @change="provinceChange"></picker> <picker :range="cityList" @change="cityChange"></picker> <picker :range="districtList" @change="districtChange"></picker> <picker :range="streetList" @change="streetChange"></picker> <picker :range="villageList" @change="villageChange"></picker> </view> </template> <script> export default { data() { return { provinceList: ['省份1', '省份2', '省份3'], cityList: ['城市1', '城市2', '城市3'], districtList: ['区县1', '区县2', '区县3'], streetList: ['街道1', '街道2', '街道3'], villageList: ['村庄1', '村庄2', '村庄3'] } }, methods: { provinceChange(e) { // 省份变化时更新城市列表 const index = e.detail.value this.cityList = this.getCityList(index) }, cityChange(e) { // 城市变化时更新区县列表 const index = e.detail.value this.districtList = this.getDistrictList(index) }, districtChange(e) { // 区县变化时更新街道列表 const index = e.detail.value this.streetList = this.getStreetList(index) }, streetChange(e) { // 街道变化时更新村庄列表 const index = e.detail.value this.villageList = this.getVillageList(index) }, villageChange(e) { // 村庄变化时输出最终结果 const index = e.detail.value const province = this.provinceList[index[0]] const city = this.cityList[index[1]] const district = this.districtList[index[2]] const street = this.streetList[index[3]] const village = this.villageList[index[4]] console.log(`${province}-${city}-${district}-${street}-${village}`) }, getCityList(provinceIndex) { // 根据省份获取城市列表 // TODO: 根据实际需求替换为异步请求或本地数据 return ['城市1', '城市2', '城市3'] }, getDistrictList(cityIndex) { // 根据城市获取区县列表 // TODO: 根据实际需求替换为异步请求或本地数据 return ['区县1', '区县2', '区县3'] }, getStreetList(districtIndex) { // 根据区县获取街道列表 // TODO: 根据实际需求替换为异步请求或本地数据 return ['街道1', '街道2', '街道3'] }, getVillageList(streetIndex) { // 根据街道获取村庄列表 // TODO: 根据实际需求替换为异步请求或本地数据 return ['村庄1', '村庄2', '村庄3'] } } } </script> <style> .picker { display: flex; flex-direction: row; justify-content: space-between; align-items: center; } </style> ``` 在上面的代码中,我们使用了五个Picker组件,分别对应省份、城市、区县、街道、村庄五个级别。每当用户选择某个级别的选项时,我们会根据该级别的值更新下一个级别的选项列表。当用户选择最后一个级别时,我们会输出最终的选择结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值