首页 新闻 会员 周边

求一算法或思路

0
悬赏园豆:20 [已关闭问题]

现有数据库一表

分配时间                           实际工时     完成时间
2009-12-15 09:00:00     2            2009-12-15 16:00:00

现在要利用 分配时间 和 实际工时 算出 任务是否提前完成 即 是否小于完成时间
有张表记录节假日情况

日期        描述     是否休假
2010-01-01  元旦     是

另外公司是8:00 --- 17:00  上班 午休12:00-13:00  周六日休息

也就是说 如果下午5点分配的工作,实际工时3小时, 如果是正常工作日 完成时间在第二天11点前,
都算提前完成工作

Blues T的主页 Blues T | 初学一级 | 园豆:11
提问于:2009-12-15 17:31
< >
分享
其他回答(3)
0

个人想法:在录入任务的时候就把最晚完成时间也存放到一个字段中,这样只要对比实际完成时间和最晚完成时间就行了,至于最晚完成时间怎么算就不在这个思路的范畴之内了(因为这个实现起来相对简单)。

dege301 | 园豆:2825 (老鸟四级) | 2009-12-15 19:11
0

首先1楼的思路是正确的,只是应该添加“实际完成时间”这个字段,按楼主说的数据例子,“最晚完成时间”就是楼主的表里已有的“完成时间”这个字段。

其次,如果不改动字段,就是根据表1计算出每项工作的分配时间和完成时间之间可以工作的时间的长度,再把这个长度和实际工时比较即可。计算工作时间长度的算法是:比较分配时间和完成时间,如果是同一天或相邻天,那么按作息时间直接计算,反之判断相隔的那几天是否是假期或双休,然后计算。

莫慌 | 园豆:9 (初学一级) | 2009-12-15 22:36
0

这个不好算,尤其是计算任务截止时间的时候。

天堂口 | 园豆:514 (小虾三级) | 2009-12-15 22:49
0

我的想法是给出一个计划完成工时,来算出计划完成时间,然后实际完成时间对比一下计划完成时间就能得到结果。

 

function GetPlanDateTime(分配时间,计划完成工时)
{
while(分配时间==节假日期)
{
 分配时间=时间置零(分配时间)+1天;
}
if(分配时间<上班时间)
{
分配时间=上班时间;
}
if(分配时间<=午休开时时间)
{
  if(分配时间+计划完成工时<=午休开时时间)
  {
   计划完成时间=分配时间+计划完成工时;
  }
  else
  {
    if(分配时间+计划完成工时+1小时<=下班时间)
    {
     计划完成时间=分配时间+计划完成工时+1;
    }
    else
    {
     分配时间=时间置零(分配时间)+1天;
     计划完成工时=计划完成工时-(下班时间-分配时间)-1小时
     GetPlanDateTime(分配时间,计划完成工时);
    }
  }
}
else
{
    if(分配时间+计划完成工时+1小时<=下班时间)
    {
     计划完成时间=分配时间+计划完成工时+1;
    }
    else
    {
     分配时间=时间置零(分配时间)+1天;
     计划完成工时=计划完成工时-(下班时间-分配时间)-1小时
     GetPlanDate(分配时间,计划完成工时);
    }
}
return 计划完成时间;
}

 

function GetPlanDateTime(分配时间,计划完成工时)
{
while(分配时间==节假日期)
{
分配时间
=时间置零(分配时间)+1天;
}

if(分配时间<上班时间)
{
分配时间
=上班时间;
}

if(分配时间<=午休开时时间)
{
if(分配时间+计划完成工时<=午休开时时间)
{
计划完成时间
=分配时间+计划完成工时;
}
else
{
if(分配时间+计划完成工时+1小时<=下班时间)
{
计划完成时间
=分配时间+计划完成工时+1;
}
else
{
分配时间
=时间置零(分配时间)+1天;
计划完成工时
=计划完成工时-(下班时间-分配时间)-1小时
GetPlanDateTime(分配时间,计划完成工时);
}
}
}
else
{
if(分配时间+计划完成工时+1小时<=下班时间)
{
计划完成时间
=分配时间+计划完成工时+1;
}
else
{
分配时间
=时间置零(分配时间)+1天;
计划完成工时
=计划完成工时-(下班时间-分配时间)-1小时
GetPlanDate(分配时间,计划完成工时);
}
}
return 计划完成时间;
}

 

 

 

阿松 | 园豆:601 (小虾三级) | 2009-12-16 08:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册