uniapp 小程序 picker 日期时间段选择(精确到年月日时分+周几)

效果图:

picker时间选择器 精确到年月日时分+周几

[video(video-J0PhRAZp-1689749931491)(type-csdn)(url-https://live.csdn.net/v/embed/312839)(image-https://video-community.csdnimg.cn/vod-84deb4/403768e0260171eeac566633b79f0102/snapshots/94eefd13ba15427abbe86802f2a9d8bd-00002.jpg?auth_key=4843349737-0-0-7d032f61ea5176c18c76ed716d317db9)(title-picker时间段选择)]

需要引入moment.js,有可能引入后在项目内会报错,可以考虑把选择日期作为一个组件引入

1、timepage.vue组件封装

<template>
	<view>
		<picker mode="multiSelector" :value="dateTimeIndex" :range="dateTimeArray" range-key="name"
			@change="dateTimeChange">
			<view class="uni-input">
				<text v-if="travelDate===''" style="color:#bbb">请选择</text>
				<text v-else>{{moment(travelDate).format('YYYY年MM月DD日 HH:mm')}}</text>
			</view>
		</picker>
	</view>
</template>

<script>
	import moment from '../../utils/moment.js'
	const dateTimeObj = (() => {
		const dateArr = []
		for (let i = 0; i < 50; i++) { // 默认50天
			const itemDate = moment().add(i, 'day');
			const d = itemDate.day();
			let week = '';
			if (d === 0) {
				week = '日'
			}
			if (d === 1) {
				week = '一'
			}
			if (d === 2) {
				week = '二'
			}
			if (d === 3) {
				week = '三'
			}
			if (d === 4) {
				week = '四'
			}
			if (d === 5) {
				week = '五'
			}
			if (d === 6) {
				week = '六'
			}
			dateArr.push({
				name: `${itemDate.format('YYYY年MM月DD日')}  周${week}`,
				value: itemDate.format('YYYY-MM-DD')
			})
		}
		const timeHHArr = [];
		for (let i = 0; i < 24; i++) {
			let str = i < 10 ? `0${i}` : `${i}`
			timeHHArr.push({
				name: str,
				value: str
			})
		}
		
		const timeMMArr = [];
		for (let i = 0;i<60;i++) {
		  let str = i<10?`0${i}`:`${i}`
		  timeMMArr.push({name:str,value:str})
		}
		return {
			dateArr,
			timeHHArr,
			timeMMArr
		}
	})()


	export default {
		components: {},
		props:{
			travelDate:{
				type:String,
				default: ''
			},
			dateTimeIndex:{
				type: Array,
				default: function () {
					return [0, 0, 0]
				}
			}
		},
		data() {
			return {
				moment: moment,
				dateTimeArray: [
					dateTimeObj.dateArr,
					dateTimeObj.timeHHArr,
					dateTimeObj.timeMMArr
				], //二维数组,长度是多少是几列
				// dateTimeIndex: [0, 0],
			}
		},
		methods: {
			dateTimeChange: function(e) {
				const d = dateTimeObj.dateArr[e.detail.value[0]].value
				const h = dateTimeObj.timeHHArr[e.detail.value[1]].value
				const m = dateTimeObj.timeMMArr[e.detail.value[2]].value
				this.$emit("timeSelect", `${d} ${h}:${m}`,e.detail.value);
			}
		}
	}
</script>

<style lang="scss" scoped>
	.items{
		margin-bottom: 18rpx;
	}
	.items-text{
		font-size: 30rpx;
		line-height: 40rpx;
		letter-spacing: 1rpx;
		color: #333333;
		margin-bottom: 19rpx;
	}
	.select-input{
		width:100%;
		height: 88rpx;
		line-height: 88rpx;
		border-radius: 10rpx;
		border: 1rpx solid #BDBDBD;
		padding-left: 22rpx;
		box-sizing:border-box;
	}
	.time-select{
		display: flex;
		justify-content: space-evenly;
		padding-left: 0;
		font-size:30rpx;
	}
</style>

2、官网下载moment.js 下载地址
3、需要显示时间组件的页面内引用时间组件

<template>
	<view class="items">
		<view class="items-text">请选择时间段 (必填)</view>
		<view class="select-input time-select">
			<time-page @timeSelect="timeSelectStart" :dateTimeIndex="startDateTimeIndex" :travelDate="startClearingTime"></time-page><time-page @timeSelect="timeSelectEnd" :dateTimeIndex="endDateTimeIndex" :travelDate="endClearingTime"></time-page>
		</view>
	</view>
	<button class="btn-item " @click="toSubmit">提交</button>
</template>

<script>
	import timePage from '@/components/timepage/timepage.vue';
	export default {
		data() {
			const currentDate = this.getDate({
				format: true
			})
			return {
				startTimeNow: currentDate,//当前时间
				startClearingTime: '', //开始时间
				startDateTimeIndex:[0,0,0],//开始时间默认选择
				endClearingTime: '', //结束时间
				endDateTimeIndex:[0,0,0],//结束时间默认选择
			}
		},
		components: {
			timePage
		},
		methods: {
			// 当前时间
			getDate() {
				const date = new Date();
				let year = date.getFullYear();
				let month = date.getMonth() + 1;
				let day = date.getDate();
				let hour = date.getHours();
				let minute = date.getMinutes();
				month = month > 9 ? month : '0' + month;
				day = day > 9 ? day : '0' + day;
				hour = hour > 9 ? hour : '0' + hour;
				minute = minute > 9 ? minute : '0' + minute;
				return `${year}-${month}-${day} ${hour}:${minute}`;
			},
			// 提交
			toSubmit: function() {
				//以下为判断条件:非空判断、开始时间不得晚于结束时间、开始时间不得早于当前时间
				if (this.startClearingTime.length == 0) {
					uni.showToast({
						icon: 'none',
						title: "请选择开始时间",
					})
					return
				}
				
				if (this.startClearingTime < this.startTimeNow) {
					uni.showToast({
						icon: 'none',
						title: "请在当前时间后选择时间段",
					})
					return
				}
				if (this.endClearingTime.length == 0) {
					uni.showToast({
						icon: 'none',
						title: "请选择结束时间",
					})
					return
				}
				if (this.startClearingTime > this.endClearingTime) {
					uni.showToast({
						icon: 'none',
						title: "开始时间不得晚于结束时间",
					})
					return
				}
			}
		}
	}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/38755.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是计算机蠕虫?

计算机蠕虫诞生的背景 计算机蠕虫的诞生与计算机网络的发展密切相关。20世纪60年代末和70年代初&#xff0c;互联网还处于早期阶段&#xff0c;存在着相对较少的计算机和网络连接。然而&#xff0c;随着计算机技术的进步和互联网的普及&#xff0c;计算机网络得以迅速扩张&…

【产品设计】通用后台管理系统需求及原型设计

后台管理系统&#xff0c;会根据不同公司、不同业务的要求做出改变。 网上很多系统的参考多数为业务中台&#xff0c;过于带有业务色彩。做过三四个后台管理系统&#xff0c;从中总结了一个通用的功能和需求设计模版&#xff0c;供大家参考。本文适用于0-2岁的产品经理做基础功…

J2EEJSP自定义标签库01out标签if标签

目录 一.什么是标签 二.JSP自定义标签库 2.1 JSP标签库是什么 2.2 处理流程 2.3 如何自定义标签 2.4 标签类型 三.开发示例 3.1 out标签 1.创建助手类 2.编写tld&#xff08;标签库的描述&#xff09;文件&#xff0c;&#xff08;必须放在WEB-INF目录或其目录下&a…

基于深度学习的高精度安全帽背心检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度安全帽背心检测识别系统可用于日常生活中或野外来检测与定位安全帽背心目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的安全帽背心目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用…

python与深度学习(二):ANN和手写数字识别二

目录 1. 说明2. 手写数字识别的ANN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测试…

常见java知识点1

目录 1 什么是Spring框架&#xff1f;Spring框架有哪些主要模块&#xff1f; 2 使用Spring框架有什么好处&#xff1f; 3 Java常用的包&#xff08;列举六个&#xff09; 4 Arraylist 和 Linkedlist 的区别 5 HashMap和Hashtable的区别 6 Java中常见的…

【监控系统】Prometheus监控组件Mysql-Exporter配置实战

Mysql-Exporter主要监控Mysql数据库的稳定性、吞吐量、连接情况、缓冲池使用情况、查询性能等各项指标&#xff0c;是我们压测时常常需要监控的一些指标。 目前&#xff0c;Exporter 支持高于5.6版本的 MySQL 和高于10.1版本的 MariaDB。在 MySQL/MariaDB 低于5.6版本时&#…

推荐10款设计师都在用的3d机械工程软件

新产品和系统的研究和开发需要特定的软件。您必须能够设计建筑物、系统、机械和设备的蓝图和示意图。您还需要能够与其他工程师、绘图员和团队成员协作&#xff0c;同时有效且高效地工作。设计工程师的软件必须简化其流程&#xff0c;以避免妨碍他们的设计和开发工作。 好的工…

【Matlab】智能优化算法_遗传算法GA

【Matlab】智能优化算法_遗传算法GA 1.背景介绍2.数学模型3.文件结构4.详细代码及注释4.1 crossover.m4.2 elitism.m4.3 GeneticAlgorithm.m4.4 initialization.m4.5 Main.m4.6 mutation.m4.7 selection.m4.8 Sphere.m 5.运行结果6.参考文献 1.背景介绍 遗传算法&#xff08;Ge…

【SpringBoot】SpringBoot配置文件

1.配置文件的作用 整个项目中所有重要的数据都是在配置文件中配置的。比如&#xff1a; 数据库的连接信息&#xff08;包含⽤户名和密码的设置&#xff09;&#xff1b;项⽬的启动端口&#xff1b;第三⽅系统的调⽤秘钥等信息&#xff1b;⽤于发现和定位问题的普通⽇志和异常…

使用端点中心进行补丁管理

什么是补丁管理 补丁管理是为网络中的所有操作系统和应用程序检测、下载、测试、批准和安装新补丁/缺失补丁的过程。它需要集中查看网络中端点的适用补丁&#xff0c;以便可以一目了然地对易受攻击、高度易受攻击和健康的系统进行分类。这有助于发现需要注意的系统&#xff0c…

WPF嵌入外部exe应用程序-实现基本的嵌入

WPF嵌入外部exe应用程序 使用场景功能实现嵌入基本功能实现1.导入windows API2.运行外部程序3. 获取窗体句柄4. 嵌入窗体5.设置子窗体位置整个代码 嵌入存在的问题&#xff1a; 使用场景 在WPF桌面应用程序开发过程中&#xff0c;有时候需要将其他程序结合到一起&#xff0c;让…

详细解析张雪峰老师对计算机专业的评价“进可攻,退可守”--【职场篇】

文章目录 张雪峰的评价计算机行业类的总结性指示就业面宽进可攻&#xff0c;退可守另一个就业出口--培训 持续学习&#xff0c;技术过人 总结 张雪峰的评价 计算机行业类的总结性指示 “就业面宽&#xff0c;进可攻&#xff0c;退可守&#xff0c;各行各业其实对计算机专业都有…

【uni-app】自定义导航栏

【uni-app】自定义导航栏 新手刚玩uniapp进行微信小程序&#xff0c;甚至多端的开发。原生uniapp的导航栏&#xff0c;并不能满足ui的需求&#xff0c;所以各种查阅资料&#xff0c;导航栏自定义内容 整理如下&#xff1a; 需要修改的文件如下&#xff1a; 1、pages.json 修…

[nlp] GPT

一、联合训练任务 1.1 NTP(Next Token Prediction) gpt预训练的一个目标函数有两个,第一个是基础的下一个词预测任务,选择一个K窗口,将窗口中的K个词的embedding作为条件去预测下一个词。 1.2 TC(Text Classification) 第二个是一个分类任务,一段话给一个标签,然后去预…

MyBatis 的架构

MyBatis 的架构 MyBatis 是一个基于 Java 的持久层框架&#xff0c;可以将 SQL 语句和 Java 代码进行分离&#xff0c;通过 XML 或注解的方式配置 SQL 语句并执行&#xff0c;从而实现数据访问的功能。MyBatis 的架构包括以下几个部分&#xff1a; SqlSessionFactory&#xff…

企业拥抱开源的同时,该如何做好风险防范?- 对话新思科技杨国梁

“软件供应链安全”相关文章合集 杨国梁 新思科技软件质量与安全部门高级安全架构师 当前&#xff0c;开源组件已成为软件应用程序中不可或缺的一部分。然而&#xff0c;随着开源软件数量的快速增长&#xff0c;应用领域的不断扩大&#xff0c;随之而来的安全问题也变得愈发严峻…

数学建模-典型相关分析

上节回顾 论文&#xff1a;常州大学一等奖淡水养殖… 要进行 pearson 相关系数 画散点图、折线图看是否相关检验正态分布满足上述&#xff0c;利用pearson相关系数 刚开始推导不会没关系&#xff0c;会应用就行&#xff0c;推导过程略&#xff0c;之后学习了后续知识&#xff…

微服务之服务器缓存

Informal Essay By English In the difficult employment situation, we need to set a good goal and then do our own thing 参考书籍&#xff1a;“凤凰架构” 进程缓存&#xff08;Cache&#xff09; 缓存在分布式系统是可选&#xff0c;在使用缓存之前需要确认你的系统…

基于时域特征和频域特征组合的敏感特征集,再利用SVM或KNN传统分类器进行轴承故障诊断(python编程,代码有详细注释)

1.文件夹介绍&#xff08;使用的是CWRU数据集&#xff09; 0HP-3HP四个文件夹装载不同工况下的内圈故障、外圈故障、滚动体故障和正常轴承数据。 这里以打开0HP文件为例进行展示&#xff0c;creat_data.py是处理原始数据的脚本&#xff0c;负责将原始数据切不重叠割成1024的固…