======================跪求~工作时间的计算!====================

月之点点 2011-08-25 04:20:36
工作时间:如下

//分别是,上午上班,上午下班,下午上班,下午下班,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" };

怎么试下一下的方法!
任意的时间点+N个工时 【返回工作时间差(秒)】

/// <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)
{
//应该怎么计算啊!!!
//上面的 休息日,和上班时间都要计算上!!!
}

跪求高手解决,,,求解决!!!
...全文
214 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
josephSC 2011-08-26
  • 打赏
  • 举报
回复
顶~~
月之点点 2011-08-26
  • 打赏
  • 举报
回复
谢谢。。我用最笨的办法解决了!
huangwenquan123 2011-08-25
  • 打赏
  • 举报
回复
其实我还是不知道你的下移是什么意思,我就判断是否在上班和下班的那两个时间段,不是的话当前时间的小时就+1,一直到在那两个时间段

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
月之点点 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 huangwenquan123 的回复:]
引用 5 楼 shijianyu00 的回复:
得到 2011/08/26 00:54:00 + 3 天!= 2011/08/29 00:54:00

但是 得到的这个时间 其中
//分别是,上午上班,上午下班,下午上班,下午下班,4个工作时间
string[] t = { "9:00:00", "12:00:00", "13:00:00", "18:00:00" };
上午上班:9:……
[/Quote]
不在上班时间内的话 就向下移,如果下一个时间还是不上班那继续下移,知道上班了为止
huangwenquan123 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 shijianyu00 的回复:]
得到 2011/08/26 00:54:00 + 3 天!= 2011/08/29 00:54:00

但是 得到的这个时间 其中
//分别是,上午上班,上午下班,下午上班,下午下班,4个工作时间
string[] t = { "9:00:00", "12:00:00", "13:00:00", "18:00:00" };
上午上班:9:00
上午下班:12:00
下午上班:13:00
下午下班:18:00
必须要在这个工作范围之内!

然后返回最终的 此任务的!结束时间!
[/Quote]
你上面得到的是
2011/08/29 00:54:00
不在那个上班时间范围内。不在上班时间范围内的话要怎么处理?》
小童 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lmaohuanl 的回复:]
去这里了解,这样做
[/Quote]不错
yangchun1213 2011-08-25
  • 打赏
  • 举报
回复
到底我理解差还是你描述有问题,没看明白你说什么……
月之点点 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lmaohuanl 的回复:]
去这里了解,这样做
[/Quote]

//<!-- 天休息时间定义 -->
//<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" />


我就是没搞明白!这块到底是啥意思!XML里面的! 到底那块是上班时间啊?
月之点点 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wxr0323 的回复:]
求时间差吧
一天工作8小时

2011-08-25 08:24:00
就是晚了

先把实际上班时间跟正常上班时间取差值-> time1


08-25和放假日期取差 用timspan -> time2

然后用time2*8在加上time1(有可能是负数)
[/Quote]

嗯是啊!!!。我一开始以为挺好算的。结果TM的那么难算!
子夜__ 2011-08-25
  • 打赏
  • 举报
回复
求时间差吧
一天工作8小时

2011-08-25 08:24:00
就是晚了

先把实际上班时间跟正常上班时间取差值-> time1


08-25和放假日期取差 用timspan -> time2

然后用time2*8在加上time1(有可能是负数)



月之点点 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wshqszw1 的回复:]
那你写活的就是了,把所有是将都当成一个变量,不就行了么?
[/Quote]

我让这个时间判断愁死了!!!!


//if (理论完成时间 > 上午下班时间 & 理论完成< 下午上班时间)
//{
// 理论完成时间=理论完成时间-上午下班时间+下午上班时间
//}
//elseif(理论完成时间 > 任务安排当天下午下班时间)
//{
// { 理论完成时间=理论完成时间-第一天下班时间+第二天上班时间}
//}


一开始写了个工时。结果中午休息时间没给计算进去!!!
然后,脑袋就开始疼!郁闷!
wshqszw1 2011-08-25
  • 打赏
  • 举报
回复
那你写活的就是了,把所有是将都当成一个变量,不就行了么?
月之点点 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lmaohuanl 的回复:]
去这里了解,这样做
[/Quote]

嗯就是跟你这个差不多的意思!!!!!!!!!!!
不过。上班时间。下班时间。我要随时变换的啊!
一天一个上班时间, 有可能 26号的上班时间是 10点。晚上下班时间是 20:00:00
-。-!
LMAOhuaNL 2011-08-25
  • 打赏
  • 举报
回复
月之点点 2011-08-25
  • 打赏
  • 举报
回复
对不起,上面说错了!返回的不是秒!是最终的结束时间。是在,精确到秒!不是返回秒!
在说明白一点:

2011-08-25 08:24:00(时间1) + 16.5小时 = 2011/08/26 00:54:00(时间2)

但是 2011/08/26 00:54:00 ,26,27,28日都休息!所以如果在 时间2在这几个日期之内就得过滤!

得到 2011/08/26 00:54:00 + 3 天!= 2011/08/29 00:54:00

但是 得到的这个时间 其中
//分别是,上午上班,上午下班,下午上班,下午下班,4个工作时间
string[] t = { "9:00:00", "12:00:00", "13:00:00", "18:00:00" };
上午上班:9:00
上午下班:12:00
下午上班:13:00
下午下班:18:00
必须要在这个工作范围之内!

然后返回最终的 此任务的!结束时间!
月之点点 2011-08-25
  • 打赏
  • 举报
回复
就是计算工作时间!
我现在有一个时间,例如:2011-08-25 08:24:00 然后我现在有一个小时数!16.5小时!

也就是:
时间1 = 2011-08-25 08:24:00
时间2 = (时间1+16.5小时)

把(时间2-休息时间)! 在判断 时间! 返回秒

WM_JAWIN 2011-08-25
  • 打赏
  • 举报
回复
基本上不懂你在说什么
月之点点 2011-08-25
  • 打赏
  • 举报
回复
如何计算啊!跪求高手!!!
月之点点 2011-08-25
  • 打赏
  • 举报
回复
如何计算啊!跪求高手!!!

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧