asp.net 时间段与时间段的计算?
我做的是考勤相关的系统;在一天内有几个休息的时间段,如下图:
我给出某个人五天的出勤时间情况,如下:
第一天:8:30~17:00
第二天:12:30~17:00
第三天:13:00~21:00
第四天:8:30~23:00
第五天:8:30~21:30
问题是怎么算出每一天的勤务(每天的工作时间,休息时间要除去).
看看有没有好的解决方法
追问:行.我仔细的看了你写的代码,,,不错,比我想的要好的多,谢谢.分给你啦.
我也把我的不成熟的发上来...:
/// <summary>
/// 勤务时间
/// </summary>
/// <returns></returns>
private string CalculationService(string time1, string time2)
{
if ("".Equals(time1) || "".Equals(time2))
{
return "0";
}
AURORADataSourceDataContext dc2 = new AURORADataSourceDataContext();
List<AK_AttendanceRest> listRest = dc2.AK_AttendanceRest.OrderBy(s => s.startTime).ToList();//得到休息的时间段的集合.
DateTime timeOne = Convert.ToDateTime(Convert.ToDateTime(time1).ToShortTimeString());
DateTime timeTwo = Convert.ToDateTime(Convert.ToDateTime(time2).ToShortTimeString());
double restTime = 0;
//Bind("PurchaseDate", "{0:t}")
foreach (AK_AttendanceRest item in listRest)
{
DateTime timeOne_1 = Convert.ToDateTime(Convert.ToDateTime(item.startTime).ToShortTimeString());
DateTime timeTwo_2 = Convert.ToDateTime(Convert.ToDateTime(item.endTime).ToShortTimeString());
if (timeOne < timeOne_1 && timeTwo < timeTwo_2 && timeTwo > timeOne)
{
restTime += 0;
}
else if (timeOne < timeOne_1 && timeTwo > timeOne_1 && timeTwo < timeTwo_2)
{
TimeSpan span = timeTwo - timeOne_1;
restTime += span.TotalHours;
}
else if (timeOne > timeOne_1 && timeOne < timeTwo_2 && timeTwo > timeTwo_2)
{
TimeSpan span = timeTwo_2 - timeOne;
restTime += span.TotalHours;
}
else if (timeOne > timeTwo_2 && timeTwo > timeTwo_2)
{
restTime += 0;
}
else if (timeOne < timeOne_1 && timeTwo > timeOne_1 && timeTwo > timeTwo_2)
{
TimeSpan span = timeTwo_2 - timeOne_1;
restTime += span.TotalHours;
}
}
TimeSpan span_Work = timeTwo - timeOne;
return (span_Work.TotalHours - restTime).ToString();
}