/// <summary>
/// Get business day which exclude weekend
/// </summary>
/// <param name="beginDay"></param>
/// <param name="endDay"></param>
/// <returns></returns>
public string GetWorkDayCount(DateTime beginDay, DateTime endDay)
{
//set creat day and end day as business day.
if (beginDay.DayOfWeek == DayOfWeek.Saturday)
beginDay = beginDay.AddDays(2);
if (beginDay.DayOfWeek == DayOfWeek.Sunday)
beginDay = beginDay.AddDays(1);
if (endDay.DayOfWeek == DayOfWeek.Saturday)
endDay = endDay.AddDays(2);
if (endDay.DayOfWeek == DayOfWeek.Sunday)
endDay = endDay.AddDays(1);
//get days between create day and end day
var allDays = Convert.ToDecimal(ExecDateDiff(beginDay, endDay, 1)) + 1;
//get weekend days between create day and end day
var weekendDays = Convert.ToDecimal(ExecDateDiff(GetFirstDayOfWeek(beginDay), GetFirstDayOfWeek(endDay), 1)) / 7 * 2;
//get work day
var workDay = allDays - weekendDays;
return workDay.ToString();
}
/// <summary>
/// Calculate the time span
/// </summary>
/// <param name="dateBegin"></param>
/// <param name="dateEnd"></param>
/// <returns></returns>
public string ExecDateDiff(DateTime dateBegin, DateTime dateEnd, int timeType)
{
TimeSpan ts1 = new TimeSpan(dateBegin.Ticks);
TimeSpan ts2 = new TimeSpan(dateEnd.Ticks);
TimeSpan ts3 = ts1.Subtract(ts2).Duration();
string result = string.Empty;
switch (timeType)
{
case 1:
result = ts3.TotalDays.ToString();
break;
case 2:
result = ts3.TotalHours.ToString();
break;
case 3:
result = ts3.TotalMinutes.ToString();
break;
case 4:
result = ts3.TotalSeconds.ToString();
break;
}
return result;
}
/// <summary>
/// Get first day of the week
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
public DateTime GetFirstDayOfWeek(DateTime time)
{
int i = time.DayOfWeek - DayOfWeek.Monday;
if (i == -1) i = 6;
TimeSpan ts = new TimeSpan(i, 0, 0, 0);
return time.Subtract(ts);
}
获取时间段内的工作日时间(除去周末)
最新推荐文章于 2024-07-17 04:46:05 发布