62,025
社区成员
发帖
与我相关
我的任务
分享
//分别是,上午上班,上午下班,下午上班,下午下班,4个工作时间
string[] t = { "9:00:00", "12:00:00", "13:00:00", "18:00:00" };
//分别是 3个休息日期
string[] t1 = { "2011-08-26", "2011-08-27", "2011-08-28" };
/// <summary>
/// 任意的时间点+N个小时 【返回工作时间差(秒)】
/// </summary>
/// <param name="Time">例如:2011-08-25 08:24:00</param>
/// <param name="Hous">16.5个工时</param>
/// <returns>返回秒</returns>
public double GetJobTime(DateTime Time,Double Hous)
{
//应该怎么计算啊!!!
//上面的 休息日,和上班时间都要计算上!!!
}
static void Main(string[] args)
{
DateTime dt = Convert.ToDateTime("2011-08-25 08:24:00");
double hours = 16.5;
GetJobTime(dt, hours);
Console.ReadLine();
}
static string[] time = { "9:00:00", "12:00:00", "13:00:00", "18:00:00" };
static string[] date = { "2011-08-26", "2011-08-27", "2011-08-28" };
public static void GetJobTime(DateTime Time, Double Hous)
{
DateTime dt = Time.AddHours(Hous);
for (int i = 0; i < date.Length; i++)
{
if ((dt.Date - Convert.ToDateTime(date[i])).Days == 0)
{
dt = dt.AddDays(3 - i);
break;
}
}
bool flag = false;
while (!flag)
{
flag = (dt.Hour >= Convert.ToDateTime(time[0]).Hour && dt.Hour <= Convert.ToDateTime(time[1]).Hour) || (dt.Hour >= Convert.ToDateTime(time[2]).Hour && dt.Hour <= Convert.ToDateTime(time[3]).Hour);
if (flag)
break;
dt = dt.AddHours(1);
}
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss"));
}
//最后输出2011-08-29 09:54:00
//<!-- 天休息时间定义 -->
//<TimeList Start="00:00:00" End="9:00:00" />
//<TimeList Start="17:00:00" End="23:59:59" />
//<TimeList Start="12:00:00" End="13:00:00" />
//if (理论完成时间 > 上午下班时间 & 理论完成< 下午上班时间)
//{
// 理论完成时间=理论完成时间-上午下班时间+下午上班时间
//}
//elseif(理论完成时间 > 任务安排当天下午下班时间)
//{
// { 理论完成时间=理论完成时间-第一天下班时间+第二天上班时间}
//}