上午上班:08:30—12:00
下午下午:14:00—18:00
条件是:在一天内请假,包括起始时间,结束时间,我怎么知道请假时间落在哪个区间内
规则如下:
8:30—11:30 这时类型为:上午上班(8:30)
8:30—12:30 这时类型为: 上午上班(8:30),上午下班(12:00)
8:30—14:30 这时类型为: 上午上班(8:30),上午下班(12:00),下午上班(14:00)
最长的时间段为:8:30—18:00 这时的类型为:上午上班,上午下班,下午上班,下午下班
有没有什么算法,不用我把下面每种情况都判断一遍。
第一种:
8:30—11:30 
8:30—12:30
8:30—14:30
8:30—18:00
第二种:
9:30—11:30
9:30—12:30
9:30—14:30
9:30—18:00
第三种:
12:00—13:30
12:00—14:30
12:00—18:00
第四种:
12:30—13:30
12:30—14:30
12:30—18:00
第五种:
14:00—15:30
14:00—18:00
第六种:
14:30—15:00
14:30—18:00

解决方案 »

  1.   

    是这样的,因公外出请假是张表
    ID--请假人-------------起始时间----------------终止时间 
    1---小张------ 2005-06-21 08:30:00.000---2005-06-21 12:00:00.000   
    另一边考勤是张表
    ID-----姓名-------------打卡时间------------打卡类型--------备注-----
    ID    EmpName            CowaDt             CowaType       Comment
    1------小张----2005-06-20 07:26:45.000-----上午上班----07:26:45;出勤
    如果因公外出请假记录存在,这时自动在考勤表中加二条记录
    2------小张----2005-06-21 08:30:00.000-----上午上班----08:30:00;出勤
    3------小张----2005-06-21 12:00:00.000-----上午下班----12:00:00;出勤
    意思大概就是这样...
      

  2.   

    真的是不好理解,不过感觉你的这个问题我感觉只是if + && 的问题,复杂度不会太大.
      

  3.   

    看来也只有if...else才适合了。
    大致上是这样:
    if(start<="上午上班")
    {
        fun1();
    }
    else if()
    {
        fun2();
    }
    ...
    else if(start=="下午下班")
    {
        fun7();
    }fun7()
    {
        //写记录下午下班
    }
    大致上就是这样的,暂时没什么别的方法,或者你考虑一下用SQL能否解决。