将日期调整到工作时间

经常用到日期的计算,某个事情从某个时间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中的。。。麻烦一些。

posted @ 2015-01-20 11:30  东子1573  阅读(263)  评论(0编辑  收藏  举报