现在有4个时间段,分别有起始时间和结束时间,一共8个时间点.大致如下:时间段 开始时间 结束时间
T1 S1 E1
T2 S2 E2
T3 S3 E3
T4 S4 E4现在要保证T1~T4,4个时间段不重叠(也就是类似E1>S2),而且开始时间和结束时间都为00:00的时候则不去判断该时间段.比如:
T1 01:00 02:00
T2 00:00 00:00
T3 01:00 03:00
T4 04:00 05:00
虽然E1>S2,但是 S2和E2都为00:00,所以忽略.但此时E1>S3,所以还是应该弹出提示.
怎么样做一个完整的验证?大家帮帮忙哈,谢谢了
T1 S1 E1
T2 S2 E2
T3 S3 E3
T4 S4 E4现在要保证T1~T4,4个时间段不重叠(也就是类似E1>S2),而且开始时间和结束时间都为00:00的时候则不去判断该时间段.比如:
T1 01:00 02:00
T2 00:00 00:00
T3 01:00 03:00
T4 04:00 05:00
虽然E1>S2,但是 S2和E2都为00:00,所以忽略.但此时E1>S3,所以还是应该弹出提示.
怎么样做一个完整的验证?大家帮帮忙哈,谢谢了
解决方案 »
- Ext 给柱状图的柱子添加标题 ???
- flash+js 图片滚动切换
- 这道题我试了很久,无法解决,看来只能由高手来解了
- 用js移动鼠标或onmouseclick改变button的class
- js页面提交跳转分页
- 史上最牛逼的特效,能搞定的都不是一般人!!!!!
- 请问高手!框架结构,如何不显示各部分之间的边框线???附上代码
- 怎样在一个页面里判断另外一个页面是否存在(两页面没有固定的关系)
- 哪里有zbborder.js和treewin.js下载呢?请大家帮忙。谢谢。
- JQ $(this).attr("clientHeight") 获取不到数据!
- 关于Extjs4里面的gridpanel动态列的问题。
- ExtJs请问如何查询并刷新我这个简单的动态gridpanel
不明白的话就查查手册L@_@K
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>javascriptExtension.TimePeriodCompare.html</title>
<meta name="generator" content="editplus" />
<meta name="author" content="[email protected]" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head>
<body>
<script type="text/javascript">
<!--function Time(hourNumber, minuteNumber) {
if (isNaN(hourNumber) || hourNumber < 0 || hourNumber > 23)
throw new Error("Time 实例化失败:无效的小时数,合理取值范围是 0 至 23。无效值为 " + hourNumber);
if (isNaN(minuteNumber) || minuteNumber < 0 || minuteNumber > 59)
throw new Error("Time 实例化失败:无效的分钟数,合理取值范围是 0 至 59。无效值为 " + minuteNumber); this.Hour = hourNumber;
this.Minute = minuteNumber;
}
Time.prototype.toString = function() {
var h = (this.Hour < 10) ? ("0"+this.Hour) : this.Hour;
var m = (this.Minute < 10) ? ("0"+this.Minute) : this.Minute;
return h + ":" + m;
};
/*
负值,如果所传递的第一个参数比第二个参数小。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大。
*/
Time.Compare = function(firstTime, secondTime) {
var returnValue = 0;
if (firstTime.Hour > secondTime.Hour)
returnValue++;
else if (firstTime.Hour < secondTime.Hour)
returnValue--;
else {
if (firstTime.Minute > secondTime.Minute)
returnValue++;
else if (firstTime.Minute < secondTime.Minute)
returnValue--;
}
return returnValue;
};
Time.Parse = function(timeString) {
var hm = timeString.split(":");
return new Time(parseInt(hm[0],10), parseInt(hm[1],10));
};function Period(startTimeString, endTimeSting) {
var start = Time.Parse(startTimeString);
var end = Time.Parse(endTimeSting); if (Time.Compare(start, end) == 1)
throw new Error("Period 实例化失败:非法的起止时间,起始时间应小于或等于终止时间。起始时间为 " + startTimeString + ",终止时间为 " + endTimeSting); this.StartTime = start;
this.EndTime = end;
}
Period.prototype.toString = function() {
return this.StartTime + " - " + this.EndTime;
};
Period.prototype.IsZero = function() {
var zero = "00:00";
if (this.StartTime == zero && this.EndTime == zero)
return true;
else
return false;
};
Period.Compare = function(firstPeriod, secondPeriod) {
var returnValue = 0;
if (Time.Compare(firstPeriod.StartTime, secondPeriod.StartTime) == 1)
returnValue++;
else if (Time.Compare(firstPeriod.StartTime, secondPeriod.StartTime) == -1)
returnValue--;
else {
if (Time.Compare(firstPeriod.EndTime, secondPeriod.EndTime) == 1)
returnValue++;
else if (Time.Compare(firstPeriod.EndTime, secondPeriod.EndTime) == -1)
returnValue--;
}
return returnValue;
};
// 判断给定的时段数组中是否存在时段重叠。
Period.HasOverlap = function(periodArray) {
if (periodArray instanceof Array)
{
var copyPeriodList = periodList.slice(0);
// 排序后,所有的 Zero 都排列到数组前端。
copyPeriodList.sort(Period.Compare); var first, second;
var len = copyPeriodList.length - 1;
for (var i=0; i<len; i++)
{
if (copyPeriodList[i].IsZero())
continue; first = copyPeriodList[i];
second = copyPeriodList[i+1]; if (Time.Compare(first.EndTime, second.StartTime) == 1)
{
// [DEBUG]
//alert(first + "\r\n" + second);
return true;
}
} return false;
}
else
throw new Error("periodArray 为非法类型参数,须传入 Array 实例。");
};/*
T1 01:00 02:00
T2 00:00 00:00
T3 01:00 03:00
T4 04:00 05:00
*/
var periodList = new Array();
periodList.push(new Period("01:00", "02:00"));
periodList.push(new Period("00:00", "00:00"));
periodList.push(new Period("01:00", "03:00"));
periodList.push(new Period("04:00", "05:00"));alert(Period.HasOverlap(periodList));
//-->
</script>
</body>
</html>
Web 开发常用手册DHTML 参考手册
http://download.csdn.net/source/308913JScript 语言参考
http://download.csdn.net/source/308916CCS 样式表中文手册
http://download.csdn.net/source/304124
弹出true就不对啊,T1和T3重叠了,我再研究下你写的
// [DEBUG]
//alert(first + "\r\n" + second);