vb 时间问题(可再加分)

来源:百度知道 编辑:UC知道 时间:2024/05/12 16:31:55
大家好,救救我....
如何把我完成工作的时间计算在工作时间之内?
举个例子:
我公司的上班时间为周一到周五8:30-17:30,周六8:30-12:30
例如九月十八号星期五,我有个工作要做24个小时,下午16:30开始做,理论上结束时间要在23号的早上9:30(去除了周六周日)
我用timesb(),timexb()两个数组来表示从今天开始的以下数个工作日的上下班时间.timesb(0),timexb(0)表示的是当天的上下班时间.
在时间小于15个时间内的我计算的没问题,但是如果时间大于这个数字.就出来了.
就上面这个24小时的工作,我该怎么写代码?
下面的是我写的预计时间不超过15个时间的代码。。计算单位是分

yjtemp = DateAdd("n", timefz, yjwcmax) ''''工作开始时间加上预计时间,也就是预计完成时间
fw = 0
jsfw:

timecha = DateDiff("n", yjtemp, timexb(fw)) ''''计算预计完成时间与当天的下班时间之差
If Err Then GoTo jieshu
timecha9 = DateDiff("n", timexb(fw), timesb(fw + 1)) ''''计算当天下班与下一天上班时间之差
timecha8 = DateDiff("n", yjtemp, timesb(fw + 1)) ''''计算下一个上班时间与预计的时间之差.
If timefz <= 900 Then
If timecha < 0 And timecha8 > 0 Then
yjt

首先要有好的思路....
最近太忙,空下来想想看
上班做事前赶了一个,你测试一下,看看是不是你要的:
Option Explicit

'这个函数返回工作日的上下班时间(你可以用数组)
Sub GetDutyTime(ByVal pDate As Date, amTime As Date, pmTime As Date)

Dim xWeek As Long

Const AM_WORK = #8:30:00 AM#
Const PM_WORK = #5:30:00 PM#
Const PM_WORK_6 = #12:30:00 PM#

xWeek = Weekday(pDate) - 1
Select Case xWeek
Case 0
amTime = 0
pmTime = 0
Case 6
amTime = AM_WORK
pmTime = PM_WORK_6
Case Else
amTime = AM_WORK
pmTime = PM_WORK
End Select

End Sub

Function GetDateTime(ByVal pDate As Date, ByVal pHour As Long) As Date
'参数说明:
'pDate任务下达时间
'pHour完成任务要求多少小时
'函数返回完成日期和时间

Dim xDate As Date, xTime As Date
Dim amTime As Date