素材牛VIP会员
如何判断日期之间不能有交叉
 許***愿  分类:JavaScript  人气:1338  回帖:7  发布于6年前 收藏

如图为场景需求:如何实现每次新增时,新增数据中的入住年月(不能为空)和腾退年月(可为空)的时间段不能与表格中其他纪录的时间段有交叉和重复?(表格中的数据存放在一个数组中)

 标签:javascript

讨论这个帖子(7)垃圾回帖将一律封号处理……

Lv2 入门
yz***zw 学生 6年前#1

这个其实你还可以进一步细化条件(约束),特别是隐含的。比如:
约定新增的起始日期为startDate,腾退日期为endDate,endDate>startDate

  1. 新增不能在当前日期(cDate)以前,startDate>=Date, endDate>startDate
  2. 有效时间段是一个二维数组chkDate,其以子项chkDate[i][0]排序,升序排列的数组,初始状态是chkDate=[[cDate,]],表示从当前日期开始的有效时间(结束时间未定的),如果chkDate=[]表明没有有效时间段段可能了。
  3. 增加一条时先在有效时间段中检测是否还有空,即chkDate!=[],就轮训chkDate,在此基础上确定一个startDate,注意这个变量需要在chkDate中看。
Lv5 码农
li***56 移动开发工程师 6年前#2

日期转换成时间戳进行比较。
新增的时间 不包含在 【入住年月】和 【腾退年月】之间就可以了。

Lv4 码徒
进***新 学生 6年前#3

遍历数据将入住年月-腾退年月转换为时间戳数组列表
新增时判断有没有和已有时间戳数组重复即可

Lv7 码师
这***人 JS工程师 6年前#4

我提供个不一样的思路:
搜索“活动安排问题”,然后把c改成js实现应该就行了。。。。(逃。。

Lv3 码奴
45***73 CEO 6年前#5

使用时间戳,简单易懂,后期也方便维护

Lv2 入门
qq***53 职业无 3年前#6
难道我了。
Lv1 新人
te***tt 职业无 3年前#7
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取