求一个关于时间段的算法, 关于时间段不能重叠的问题

chongworm 2014-04-07 05:21:46
比如某个房间,已经被预定了下面的时间段:
2014-03-16至2014-04-16
2014-06-25至2014-8-25
2014-11-01至2014-12-01
... (其它已预定的时间段)

如果有人再预定,时间段不能和上面的时间段重叠,例如2014-04-10至2014-05-10是不允许的(和第一行的时间段部分重叠),而2014-04-17至2014-05-17是可以的...

请问怎么写? 伪代码也可以
...全文
359 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
licip 2014-04-07
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> </head> <body> <script type="text/javascript"> <!-- function datebet(start,end){ this.start = start; this.end = end; this.checkIn = function(p){ if(p.start>=this.start && p.start<=this.end){ return true; } if(p.end >= this.start && p.end <= this.end){ return true; } return false; } } var dbed = [new datebet('2014-03-16','2014-04-16'),new datebet('2014-06-25','2014-08-25'),new datebet('2014-11-01','2014-12-01')]; function checkOk(dbs,p){ for(var i = 0;i<dbs.length;i++){ var db = dbs[i]; if(db.checkIn(p)){ return false; } } return true; } var p1 = new datebet('2014-04-10','2014-05-10'); var p2 = new datebet('2014-04-17','2014-05-17'); document.writeln(checkOk(dbed,p1)); document.writeln(checkOk(dbed,p2)); //--> </script> </body> </html>
似梦飞花 2014-04-07
  • 打赏
  • 举报
回复
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
	function test(str){
		var a=['2014-03-16至2014-04-16','2014-06-25至2014-8-25','2014-11-01至2014-12-01'];
		var n=sp(str);
		var m=0;
		for(var i=0,len=a.length;i<len;i++){
			var k=sp(a[i]);
			if(k[0]>n[1]||k[1]<n[0]){
				m++;
			}else{
				break;
			}
		}
		return m==a.length;
	}
	function sp(str){
		return str.split('至');
	}
	alert(test('2014-04-10至2014-05-10'));
	alert(test('2014-04-17至2014-05-17'));
</script>
</head>

<body>
</body>
</html>
似梦飞花 2014-04-07
  • 打赏
  • 举报
回复
<!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript"> function test(str){ var a=['2014-03-16至2014-04-16','2014-06-25至2014-8-25','2014-11-01至2014-12-01']; var n=sp(str); var m=0; for(var i=0,len=a.length;i<len;i++){ var k=sp(a[i]); if(k[0]>n[1]||k[1]<n[0]){ m++; }else{ break; } } return m==a.length; } function sp(str){ return str.split('至'); } alert(test('2014-04-10至2014-05-10')); alert(test('2014-04-17至2014-05-17')); </script> </head> <body> </body> </html> 这样试试 没具体测试 不对的自己改下

87,917

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧