c# 怎么判断一个时间区间在另一个时间区间?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 怎么判断一个时间区间在另一个时间区间?相关的知识,希望对你有一定的参考价值。

如我现在list下添加了4个时间区间:8:00-12:00 13:00-16:00 17:30-20:00,20:00-2:00,2:00-3:00
现在我需要新增一个区间:9:00-12:30 但是这个时间区间在8:00-12:00中已经存在,则不允许添加。同样如果我想添加22:00-1:00,这个区间在20:00-2:00,同样也是不能添加,该怎么处理

list<string> time=new list<string>
time[0]=8:00-12:00
time[1]=13:00-16:00
time[2]=17:30-20:00
time[3]=20:00-2:00
分别得到每个时间段的开始时间和结束时间
string t0S= time[0].Split ('-')[0];//得到time[0]的开始时间
string t0E= time[0].Split ('-')[1];//得到time[0]的结束时间
以此类推
string t1S= time[1].Split ('-')[0];
string t1E= time[1].Split ('-')[1];
string t2S= time[2].Split ('-')[0];
string t2E= time[2].Split ('-')[1];
string t3S= time[3].Split ('-')[0];
string t3E= time[3].Split ('-')[1];
然后把字符串转为时间格式
TimeSpan St0 = DateTime.Parse(t0S).TimeOfDay;
TimeSpan St1 = DateTime.Parse(t1S).TimeOfDay;
TimeSpan St2 = DateTime.Parse(t2S).TimeOfDay;
TimeSpan St3 = DateTime.Parse(t3S).TimeOfDay;
TimeSpan Et0 = DateTime.Parse(t0E).TimeOfDay;
TimeSpan Et1 = DateTime.Parse(t1E).TimeOfDay;
TimeSpan Et2 = DateTime.Parse(t2E).TimeOfDay;
TimeSpan Et3 = DateTime.Parse(t3E).TimeOfDay;
新增时区的开始时间 NewS="9:00"
新增时区的结束时间 NewE="12:30"
TimeSpan NewSt = DateTime.Parse(NewS).TimeOfDay;
TimeSpan NewEt = DateTime.Parse(NewE).TimeOfDay;
然后判断 新增时区的开始时间 是不是比 每个list的开始时间大和 新增时区的结束时间 是不是比 每个list的结束时间小
if((NewSt>=St0||NewSt>=St1NewSt>=St2NewSt>=St3)&&(NewEt<=Et0||NewEt<=Et1||NewEt<=Et2||NewEt<=Et3))

MessageBox ("老时间段已包含新增时间段")

else

....................
参考技术A 判断新增的区间最大值不在已有区间内,且最小值也不在已有区间内就可以添加就行了啊追问

说是怎么说,我尝试过了,按照逻辑来写,不对啊,有具体代码么

参考技术B 修改最新添加的时间区间
把 8:00-12:00 改成8:00-12:30,则2个都包含了,剩下也是追问

这个本来就是智能判断是否在区间,上面时间只是举例,意思是不能在上面时间区间。。。你这还修改了。。。。

追答

那得看你list存的格式,然后if判断不就行了

sql语句判断时间区间的问题

我想筛选出一个时间区间里面的数据
刚刚百度到一个CheckDate Between这个方法,
但是我这样写起来出错了,
http://zhidao.baidu.com/question/515206803.html
$check_sql = "SELECT id FROM $cxlm_table WHERE CheckDate Between '$yesterday' And '$nowdatetime' ";
输出之后是这样的
SELECT id FROM cx_cxlm WHERE ip = '127.0.0.1' AND CheckDate Between '2013-08-11 12:14:01' And '2013-08-12 12:14:01'
给这句话加上括号也没用,
报错信息是
#1054 - Unknown column 'CheckDate' in 'where clause'
被当作字段处理了
请问下sql语句里面判断时间区间的方法是什么?

1、首先,我们来定义一个时间字段的参数,暂且命名为Date,语句为:declare @Date datetime。

2、给@Date这个参数进行赋值,的getDate(),语句为: set @Date=getDate()。

3、DATEADD() 函数在日期中添加或减去指定的时间间隔,语法为:DATEADD(datepart,number,date),datepart参数是合法的日期表达式。number是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。

4、计算前一天的算法语句:select dateAdd(day,-1,@Date) as 'Yesterday',这里的as后面的内容只是定义查询出来列的名称而已。

5、最后,我们来执行一下这个查询语句。

6、后一天的算法语句如出一辙,只是需要将dateAdd中的时间间隔数进行一下调整即可。

参考技术A SQL 里面判断时间区的方法是 between and
如:有字段更新时间:updatetime 类型 datetime ,判断时间区'2013-08-11 12:14:01' 到 '2013-08-12 12:14:01'之前的,语句:
SELECT id FROM cx_cxlm WHERE ip = '127.0.0.1' AND updatetime Between '2013-08-11 12:14:01' And '2013-08-12 12:14:01'

#1054 - Unknown column 'CheckDate' in 'where clause'
不知道列CheckDate本回答被提问者采纳
参考技术B 你看看有没有checkdate这个字段

以上是关于c# 怎么判断一个时间区间在另一个时间区间?的主要内容,如果未能解决你的问题,请参考以下文章

PHP如何判读时间区间

sql语句判断时间区间的问题

MongoDB C#驱动中查询两个值的区间怎么写

JS 如何判断一个数字在某一个区间内

java 判断一个数值是不是在一个数值区间内

excel中如何判断日期在这个日期区间内并返回对应的数值?