zoukankan      html  css  js  c++  java
  • 将日期调整到工作时间

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

  • 相关阅读:
    DATASNAP远程方法返回TSTREAM正解
    DELPHI获取宽带IP
    DELPHI HMAC256
    JWT -- JSON WEB TOKEN
    UNIGUI集成HTML导航
    咏南WEB APP开发框架
    购买咏南中间件
    咏南中间件当作WEB SERVER使用方法
    咏南中间件增加WEBSOCKET支持
    iOS -- 设置label的自适应
  • 原文地址:https://www.cnblogs.com/hydonlee/p/4235619.html
Copyright © 2011-2022 走看看