码迷,mamicode.com
首页 > 其他好文 > 详细

将日期调整到工作时间

时间:2015-01-20 11:50:04      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

经常用到日期的计算,某个事情从某个时间dt1开始工作,经过N个小时的工作(仅限工作时间),预计什么时间能完工?

假设工作时间是上午9:00 - 18:00,一天9小时了。。。好吧,中午1小时我也算了。

现在有dt1 开工时间, N 工时,求,结束时间dt2。

1.如果直接用dt1 + N,时间少还好,稍一大,就要晚上结束或是第N天的晚上。。。显然不合理。

2.要考虑下班的时间,算到第二天或第三天去。

一天工作9小时,天数:d = N/9

dt2 = dt1 + d

可以了吗?貌似不行。 如果开始时间已经接近下班。。。加上这个d, d可能是1.5,一天半,又要到晚上了。 需要继续修正。

3.设dt3 = dt1 +d

此时得到的时间有可能是在18:00-9:00之间的,也就是非工作时间。

18:00-9:00 共有15个小时(9+24-18=15),超过1天的工作时间,所以要分段处理。

一天内的:18:00-3:00(9小时): dt2 = dt3 + 15小时(15/24=0.625)

过一天的:3:00-9:00: dt2 = dt3 + 1天 + 6小时(6/24=0.25)

so.. over.

伪码:

d = n/9

dt3 = dt1 + d

if (hour(dt3) >= 18 or hour(dt3)<3) then dt2 = dt3 + 0.625

elseif (hour(dt3) >= 3 and hour(dt3)<9) then dt2 = dt3 + 0.25

else dt2 = dt3

其实可能还有更好的函数,但我是在EXCEL中的。。。麻烦一些。

将日期调整到工作时间

标签:

原文地址:http://www.cnblogs.com/hydonlee/p/4235619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!