有5个时间段(将一天分为5段),
1. 00:00-8:00
2. 08:00-12:00
3. 12:00-13:00
4. 13:00-17:00
5. 17:00-23:59
现在我要传入两个参数,一个开始时间,一个结束时间(两个时间不确定分别在哪个时间段,但结束时间大于开始时间)
2,4时间段为有效时间段(上班时间)1,3,5为休息时间,传入的开始结束时间为请假的开始时间和结束时间
现要判断一天请了多少时间的假
想来想去想不到好方法,总不能写15个if else吧,那以后维护太麻烦了,谁有好办法,帮帮忙,谢谢
1. 00:00-8:00
2. 08:00-12:00
3. 12:00-13:00
4. 13:00-17:00
5. 17:00-23:59
现在我要传入两个参数,一个开始时间,一个结束时间(两个时间不确定分别在哪个时间段,但结束时间大于开始时间)
2,4时间段为有效时间段(上班时间)1,3,5为休息时间,传入的开始结束时间为请假的开始时间和结束时间
现要判断一天请了多少时间的假
想来想去想不到好方法,总不能写15个if else吧,那以后维护太麻烦了,谁有好办法,帮帮忙,谢谢
private string MinsToTime(int mins)
{
int hh = mins/60;
int mm = mins - hh * 60;
string ss = hh.ToString("D2") + ":" + mm.ToString("D2");
return ss;
}//将“00:00”形式的字符串转换为分钟数
private int TimeToMins(string str)
{
int iRet = 0;
try
{
string delimStr = ":";
char [] delimiter = delimStr.ToCharArray();
string[] ss = str.Split(delimiter);
int hh = Convert.ToInt32(ss[0]);
int mm = Convert.ToInt32(ss[1]);
iRet = hh * 60 + mm;
}
catch{}
return iRet;
}//计算结果,返回“00:00”形式的字符串
private string Calc(string str_start,string str_end)
{
int t_wk1_s = TimeToMins("08:00");
int t_wk1_e = TimeToMins("12:00");
int t_wk2_s = TimeToMins("13:00");
int t_wk2_e = TimeToMins("17:00"); int t_st = TimeToMins(str_start);
int t_ed = TimeToMins(str_end); int mins1 = Math.Min(t_ed,t_wk1_e) - Math.Max(t_st,t_wk1_s);
mins1 = (mins1<0) ? 0 : mins1;
int mins2 = Math.Min(t_ed,t_wk2_e) - Math.Max(t_st,t_wk2_s);
mins2 = (mins2<0) ? 0 : mins2; return MinsToTime(mins1+mins2);
}
你说的这些情况都包括在代码里面了!起始你只要关心工作时间段,第一个工作时间段08:00-12:00和第二个工作时间段13:00-17:00就行了呀!你可以把这段代码copy到你的程序里面,盐酸以下就知道了,肯定都包括了!
{
str = str.Replace(":","*60+");
return (int)new DataTable().Compute(str, "");
}