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

这篇具有很好参考价值的文章主要介绍了uniapp 小程序 picker 日期时间段选择(精确到年月日时分+周几)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果图:

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

uniapp时间选择,uni-app,小程序,chrome

需要引入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、需要显示时间组件的页面内引用时间组件文章来源地址https://www.toymoban.com/news/detail-629927.html

<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
				}
			}
		}
	}

到了这里,关于uniapp 小程序 picker 日期时间段选择(精确到年月日时分+周几)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp 实现时间段选择器

    u-popup结合picker-view搭配使用实现时间段选择器 效果图:  

    2024年02月15日
    浏览(49)
  • uniapp的 picker 日期时间选择器

    效果图: dateTimePicker.js 需要用到的页面中 引入js,并调取方法 参考链接地址;https://www.cnblogs.com/anna001/p/16903451.html

    2024年02月10日
    浏览(47)
  • js 比较当前日期是否在某个是个范围之内(时间段内)

    需求描述:判断当前日期或者指定日期是不是在某个时间段内 借用momentjs库去实现 安装moment 1)有两种方法,一种是vue,另一种是node中 当前日期是否在一个日期时间段内 isBetween isBetween:检查一个 moment 是否在其他两个 moment 之间,可选择检查指定的时间刻度(分钟,小时,日

    2024年02月05日
    浏览(54)
  • vue 封装一个鼠标拖动选择时间段功能

       

    2024年02月15日
    浏览(38)
  • JavaScript - 判断当前时间是否在指定区间内,例如:9:00~12:00(检查当前时间是否处于规定的两个时间段范围内),适用于 vue.js / uniapp / 微信小程序等前端项目

    例如,您想知道当前时间是否处于 9:00 ~ 12:00 时间区间内,然后根据这个判断进而实现业务逻辑。 如下示例所示, 本文提供一个函数,您只需要传入 2 个时间区间,便可得出当前时间是否在该时间区间范围内: 您可以一键复制,直接粘贴到您的项目中。 您只需要传入开始时

    2024年02月16日
    浏览(63)
  • elementUI 时间段快捷选择及禁用(包含d2-crud-plus中使用)

    vue项目elementUI,需求为时间范围搜索,带快捷键并且只能选择今天之前,90天内的时间。搜索今天为实时数据,不能使用时间段,只能单独搜索。 ※注 需求是今天不可选,只有时间为空时才查询今天,所有下面代码中时间段快捷选择时,结束时间都是昨天。具体可根据自己需

    2024年01月25日
    浏览(37)
  • 使用原生小程序组件Picker自定义日期时间选择器

    1、 Picker简单介绍 可以看到Picker类型有5种, 具体可以查看微信开放文档 picker。 Picker(选择器)是一种常见的用户界面控件,用于从多个选项中选择一个或多个选项。在小程序中,Picker 是一种可用于选择日期、时间、地点等信息的组件。 小程序中的 Picker 组件提供了几种不

    2024年02月09日
    浏览(46)
  • uniapp uni-datetime-picker结束时间不能高于开始时间,精确到时分秒

    类似于问卷出题,问卷的开始时间不能低于当前时间,结束时间必须不能早于开始时间,精确到时分秒 在当前页面导入import {dataConversion} from “@/utils/index”; 第二天结束时间的时分秒可以往前选 当天的结束时间,时分秒只能往后选 我是uniapp的小浣熊,也是小火龙大哥,有事直接去群

    2024年02月16日
    浏览(54)
  • 02.el-date-picker组件只可以选择为了时间,精确到时分秒

    🍓 作者主页:仙女不下凡-前端萌新 🍓 前言介绍:以下👇 内容都是我个人对于前端知识的总结,会定期更新欢迎持续关注! 🍓 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 下面代码为时间选择器 datetime 可以精确至时分秒,下面使用 handlePickerOptions 方法来处理需求

    2024年02月15日
    浏览(56)
  • 常用的时间段的时间戳

    获取 昨天这个时间的时间戳 计算今天0点的时间戳 计算今天23点59分59秒的时间戳 计算昨天0点的时间戳 计算昨天23:59:59 秒的时间戳 计算近7日 0点的时间戳(不包含当天) 计算近30天 0点的时间戳(不包含当天) 计算上月第一天 0点的时间戳 计算上月最后一天 23点的时间戳 计算上周

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包