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