以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 时间计算 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176581) |
-- 作者:lianghanyu -- 发布时间:2022/4/19 8:36:00 -- 时间计算 怎么根据开始时间, 计划耗时, 然后减去中间午休和晚休时间(周一至周六 早上8.00-12.00,下午13.30-19.30为上班时间,周日休息 ),得出 计划完成时间? 和实际完成时间后,实际用时?因为我要对比这个任务是否在计划时间内完成。 |
-- 作者:有点蓝 -- 发布时间:2022/4/19 9:40:00 -- Dim d1 As Date = #04/09/2022 10:00# \'开始时间 Dim hs As Double = 39 \'计划耗时 Dim d11 As Date = New Date(d1.year, d1.month, d1.day, 8, 0, 0) Dim d12 As Date = New Date(d1.year, d1.month, d1.day, 12, 0, 0) Dim d21 As Date = New Date(d1.year, d1.month, d1.day, 13, 30, 0) Dim d22 As Date = New Date(d1.year, d1.month, d1.day, 19, 30, 0) Dim hh As Double Dim d As Date = d1 If d <= d11 Then hh = 10 ElseIf d > d11 And d < d12 Then hh = (d12 - d).TotalHours + 6 ElseIf d > d12 And d < d21 Then hh = 6 ElseIf d > d21 And d < d22 Then hh = (d22 - d).TotalHours End If Output.Show("hh=" & hh) d = d11 Do While hh < hs Dim c As Double = hs - hh Output.Show("c=" & c) If c > 10 Then hh += 10 d = d.adddays(1) If d.DayOfWeek = 0 Then d = d.adddays(1) Output.Show("hh3=" & hh) Output.Show("d=" & d) Else hh += c Output.Show("c < 10") d = d.AddHours(c) Output.Show("hh4=" & hh) Output.Show("d2=" & d) Exit Do End If Loop d = d.adddays(1) MsgBox("计划完成时间=" & d) |
-- 作者:ntcsm -- 发布时间:2023/3/27 14:32:00 -- 共两列(时间,用时),同一字段(时间),下一行减去上一行求时间差 |