elementUI,vue,前端判断时间是否有交集(重合)方法

在这里插入图片描述

分成三个部分

    • html
    • ※ 具体实现方法
    • methods
      • 帮助理解逻辑图:![@smallredBook:灵魂画手,业余爱好支持支持](https://i-blog.csdnimg.cn/direct/665950ee60964ef8912ce4f1a98dcc0e.jpeg#pic_center)
    • 简化:由上面的逻辑反推[^1]

html

<template><el-form ref="Froms" :model="formData" :rules="rules" label-width="100px" size="small"><el-form-item label="日售卖区间:" prop="saleDayTime"><div style="border: 1px solid #DCDFE6; padding: 5px 0px 0px 5px; border-radius: 5px; margin-bottom: 5px;" v-if="this.formData.saleDayTime && this.formData.saleDayTime.length > 0"><el-tag v-for="(item,index) in formData.saleDayTime" :key="index" closable @close="handleClose(index)" style="margin-right: 5px; margin-bottom: 5px;">{{item}}</el-tag></div><el-time-picker v-model="tempTimeStart" :picker-options="{selectableRange: `00:00:00 -${tempTimeEnd ? tempTimeEnd : '23:59:59'}`}" placeholder="选择时间" value-format="HH:mm:ss" style="width: 120px;"></el-time-picker><el-time-picker v-model="tempTimeEnd" :picker-options="{ selectableRange: `${tempTimeStart ? tempTimeStart : '00:00:00'} - 23:59:59`}"placeholder="选择时间" value-format="HH:mm:ss" style="width: 120px;"></el-time-picker><el-button size="small" @click="addTime" type="primary" style="margin-left: 10px;">新增可用时间段</el-button></el-form-item></el-form>
</template>

※ 具体实现方法

<script>
export default {// 判断时间是否有交集方法const checkSaleDay = (rule, value, callback) => {// console.log(value) // 时间格式: ['10:56:58-13:56:59']let arrOne = [];value.forEach((item) => {let arr1 = item.split('-');// 注:“24小时制”时间,将“时”、“分”、“秒”,位上的时间以字符串形式进行拼接,拼接之后的数字时间越晚的数字会越大let startTime = arr1[0].split(':')[0] + arr1[0].split(':')[1] + arr1[0].split(':')[2]; // "10"+"56"+"58", 以字符串形式拼接let endTime = arr1[1].split(':')[0] + arr1[1].split(':')[1] + arr1[1].split(':')[2]; // "13"+"56"+"59", 以字符串形式拼接arrOne.push({start: startTime,end: endTime});});var len = arrOne.length;// console.log(arrOne)let satisfied = true;for (var i = 0; i < len; i++) {for (var j = i + 1; j < len; j++) {let start1 = arrOne[i].start;let start2 = arrOne[j].start;let end1 = arrOne[i].end;let end2 = arrOne[j].end;if (start1 < start2 && start2 < end1) { // 例:start1=3,end1=6;start2=5,end2=10satisfied = false;} else if (start1 > start2 && end2 > start1) { // 例:start1=3,end1=6;start2=2,end2=5satisfied = false;} else if (start1 > start2 && end1 < end2) { // 例:start1=3,end1=6;start2=2,end2=10satisfied = false;}  else if (start1 < start2 && end1 > end2) { // 例:start1=3,end1=6;start2=4,end2=5satisfied = false;}}}if (satisfied) {callback();} else {callback(new Error('售卖区间产生存在交集,请确认后重选'));}}data() {return{tempTimeStart: '', // 所选开始时间回显tempTimeEnd: '', // 所选结束时间回显formData:{saleDayTime: [],},rules: {saleDayTime: [{required: true,message: '请选择日售卖区间',trigger: 'change'},{required: true,validator: checkSaleDay,trigger: 'change'}]}}},
}
<script>

methods

<script>export default {methods:{// 删除所选时间handleClose(index) {this.formData.saleDayTime.splice(index, 1);},// 新增可用时间段addTime() {if (!this.tempTimeStart || !this.tempTimeEnd) {return;}if (!this.formData.saleDayTime) {this.formData.saleDayTime = [];}// 把选择的时间加入数组里this.formData.saleDayTime.push(this.tempTimeStart + '-' + this.tempTimeEnd);// 加入成功后清空回显值this.tempTimeStart = '';this.tempTimeEnd = '';}}}
<script>

帮助理解逻辑图:@smallredBook:灵魂画手,业余爱好支持支持

简化:由上面的逻辑反推1

<script>
export default {// 判断时间是否有交集方法const checkSaleDay = (rule, value, callback) => {// console.log(value) // 时间格式: ['10:56:58-13:56:59']let arrOne = [];value.forEach((item) => {let arr1 = item.split('-');// 注:“24小时制”时间,将“时”、“分”、“秒”,位上的时间以字符串形式进行拼接,拼接之后的数字时间越晚的数字会越大let startTime = arr1[0].split(':')[0] + arr1[0].split(':')[1] + arr1[0].split(':')[2]; // "10"+"56"+"58", 以字符串形式拼接let endTime = arr1[1].split(':')[0] + arr1[1].split(':')[1] + arr1[1].split(':')[2]; // "13"+"56"+"59", 以字符串形式拼接arrOne.push({start: startTime,end: endTime});});var len = arrOne.length;// console.log(arrOne)let satisfied = false; // 注意这时候这里的变量值为false了哦for (var i = 0; i < len; i++) {for (var j = i + 1; j < len; j++) {let start1 = arrOne[i].start;let start2 = arrOne[j].start;let end1 = arrOne[i].end;let end2 = arrOne[j].end;if (end1 < start2 || start1 < end2) { // 例:start1=3,end1=6;start2=7,end2=10;start1=3,end1=6;start2=1,end2=2satisfied = true;}}}if (satisfied) {callback();} else {callback(new Error('售卖区间产生存在交集,请确认后重选'));}}
}
<script>

  1. 反推思维逻辑图:
    smallredBook:灵魂画手,业余爱好支持支持 ↩︎

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FreeRTOS互斥量

文章目录 一、互斥量的使用场合二、互斥量函数1、创建2、其他函数 三、示例: 优先级继承四、递归锁1、死锁的概念2、自我死锁3、函数 怎么独享厕所&#xff1f;自己开门上锁&#xff0c;完事了自己开锁。 你当然可以进去后&#xff0c;让别人帮你把门&#xff1a;但是&#xff…

无人机环保行业解决方案-应急环境污染处理

无人机环境应急处理 传统环境应急的典型挑战 发生环境应急事件时&#xff0c;最重要的是快速获取前方信息。然而&#xff0c;有毒气体 和易燃易爆品多&#xff0c;存在二次爆炸风险&#xff0c;严重威胁人身安全。无人机可快 速赶到事故现场&#xff0c;查看周边环境、污染物…

单火供电零线发生器 单火变零火线开关面板零火开关老房改造必备

创作 史新华 零线发生器套件与单火线供电套件&#xff0c;作为现代智能家居解决方案中的创新之作&#xff0c;它们犹如智能电气领域的魔术师&#xff0c;巧妙地解决了传统智能开关在单火线路环境中因无零线而难以应用的难题。这些套件&#xff0c;如同智能电气世界的桥梁&…

【守卫你的安全】基于高通QCS6490之AI智慧电子围篱展示方案

高通QCS6490是一款专为工业和商业物联网应用而设计的系统单芯片(SoC)&#xff0c;支援高阶物联网装置的Wi-Fi 6E连线&#xff0c;以及先进的摄像头、人工智能和计算功能&#xff0c;以实现低功耗下的强大性能。这款芯片结合高通Kryo™ 670 CPU和高通Hexagon处理器&#xff0c;具…

芋道源码yudao-cloud 二开日记(商品sku数据归类为规格属性)

商品的每一条规格和属性在数据库里都是单一的一条数据&#xff0c;从数据库里查出来后&#xff0c;该怎么归类为对应的规格和属性值&#xff1f;如下图&#xff1a; 在商城模块&#xff0c;商品的单规格、多规格、单属性、多属性功能可以说是非常完整&#xff0c;如下图&#x…

【前端逆向】最佳JS反编译利器,原来就是chrome!

有时候需要反编译别人的 min.js。 比如简单改库、看看别人的 min,js 干了什么&#xff0c;有没有重复加载&#xff1f;此时就需要去反编译Javascript。 Vscode 里面有一些反编译插件&#xff0c;某某Beautify等等。但这些插件看人品&#xff0c;运气不好搞的话&#xff0c;反…

Postman:API开发与测试的强大伴侣

在当今的数字化时代&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为不同软件系统之间通信的桥梁&#xff0c;它们如同数字世界的“翻译官”&#xff0c;使得数据和服务能够在不同的平台和应用程序之间无缝流动。然而&#xff0c;API的开发、测试和维护并非易事…

见证中国数据库的崛起:从追赶到引领的壮丽征程《三》

见证中国数据库的崛起&#xff1a;从追赶到引领的壮丽征程《三》 三、深度思考&#xff1a;中国数据库发展的经验与启示产学研用结合的创新模式应用驱动的创新路径人才培养的关键作用 【纪录片】中国数据库前世今生 在数字化潮流席卷全球的今天&#xff0c;数据库作为IT技术领域…

PowerDNS架构解析与安装部署指南

1、背景介绍 目前公司使用PowerDNS进行DNS管理&#xff0c;但由于采用的是单节点架构&#xff0c;存在不可用的风险。为提升系统的稳定性和可靠性&#xff0c;我们计划对现有架构进行重构。通过引入高可用性设计&#xff0c;我们将优化系统架构&#xff0c;使其能够在故障情况…

计算机毕业设计Python+Flask微博舆情分析 微博情感分析 微博爬虫 微博大数据 舆情监控系统 大数据毕业设计 NLP文本分类 机器学习 深度学习 AI

基于Python/flask的微博舆情数据分析可视化系统 python爬虫数据分析可视化项目 编程语言&#xff1a;python 涉及技术&#xff1a;flask mysql echarts SnowNlP情感分析 文本分析 系统设计的功能&#xff1a; ①用户注册登录 ②微博数据描述性统计、热词统计、舆情统计 ③微博数…

Python酷库之旅-第三方库Pandas(060)

目录 一、用法精讲 231、pandas.Series.reorder_levels方法 231-1、语法 231-2、参数 231-3、功能 231-4、返回值 231-5、说明 231-6、用法 231-6-1、数据准备 231-6-2、代码示例 231-6-3、结果输出 232、pandas.Series.sort_values方法 232-1、语法 232-2、参数…

springboot的表现层/控制层controller开发

第一步&#xff1a;新建文件和注入业务层对象 需要使用的注解&#xff1a; 第一个声明是restful风格开发 第二个是需要设置网页访问路径 RestController RequestMapping("/fuels")//http://localhost/fuels注入服务层对象&#xff1a; Autowiredprivate FuelServ…

RabbitMQ知识总结(基本概念)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 基本概念 Producer&#xff1a; 消息的生产者&#xff0c;是一个向…

活动报道 | 盘古信息携IMS OS+小快轻准产品集亮相东莞市中小数转试点供需对接会

8月1日&#xff0c;由东莞市工业和信息化局主办&#xff0c;南城街道经济发展局承办&#xff0c;东莞市软件行业协会协办的东莞市中小企业数字化转型城市试点供需对接会&#xff08;城区和水乡新城片区&#xff09;隆重召开。市工业和信息化局副局长江小敏、市工业和信息化局信…

Mybatis超级方便操作数据方式(注解+封装mapper接口)!!!

Mybatis作为一个流行的持久层框架&#xff0c;其优化了Java程序与数据库的交互过程。它的核心在于使用Mapper接口与XML映射文件或注解绑定来实现对数据库的操作。这种方式不仅简化了数据库操作&#xff0c;还提升了开发效率&#xff0c;使得开发者可以从繁琐的JDBC代码中解放出…

MIT-离散数学笔记

离散数学 PropositionEx 1:Ex 2:Ex 3:Ex 4:Ex 5:Ex 6:Ex 7:Ex 8: Proposition In mathematics, we have a mathematical proof is a verification of a proposition by a chain of logical deductions from a set of axioms. 在数学中&#xff0c;数学证明是通过一组公理的一系…

Vmware ubuntu20.04 虚拟文件夹

目录 1.vmware 设置 2.ubuntu设置 1.vmware 设置 设置完成后我们开机 2.ubuntu设置 我们打开终端 输入命令 vmware-hgfsclient可以看到你当前的共享文件 然后我们输入以下命令&#xff0c;用于将共享文件夹挂载到虚拟机中 sudo vmhgfs-fuse .host:/ /mnt -o nonempty -o …

从零开始安装Jupyter Notebook和Jupyter Lab图文教程

前言 随着人工智能热浪&#xff08;机器学习、深度学习、卷积神经网络、强化学习、AGC以及大语言模型LLM, 真的是一浪又一浪&#xff09;的兴起&#xff0c;小伙伴们Python学习的热情达到了空前的高度。当我20年前接触Python的时候&#xff0c;做梦也没有想到Python会发展得怎么…

Blackcat V2.2付费会员制WordPress资源站主题

Blackcat-付费会员制WordPress资源站主题&#xff0c;该主题是基于简约实用的主题选项框架 Codestar Framework 进行开发的功能强大的付费会员制主题&#xff0c;该主题尤其适合用于搭建付费下载资源网站&#xff0c;比如素材站、软件站、视频教程站等付费资源下载网站。 集成…

(~_~)

一、用不同url头利用python访问一个网站&#xff0c;并把返回的东西保存为 requests库 主要用于http发送请求和处理响应 1.发送get和post请求 requests.get(目标网址) requests.post(url,data) post于get不同的是get一般用来请求获取数据&#xff0c;而post相当于带着数…