top
Loading...
用VB計算累計時間值

VB無法在日期/時間字段中存放和測量累計時間, 日期/時間存放成特定的時間點而不是一個時間跨度,并且無法在一個日期/時間變量中存 放超過24小時的值。如輸入9:30,輸入的不是某臺設備工作的時間長度,而是一個特定時間, 即是早晨9:30。在日期/時間字段中輸入26:30,VB會顯示出錯信息,認為這不是一個合法的 輸入。VB不是不能進行日期/時間字段的累加計算,它在內部以浮點值的形式存放,能夠進 行累加計算,但結果不是我們希望的那樣。

筆者在工作中遇到計算累計時間問題,利用所編 的兩個簡短的函數dhcTime和dhcMinutes,得到滿意的解決。函數dhcMinutes接受以字 符串值形式輸入的累計時間作為參數,返回的時間值以分鐘數表示,這樣就可以方便地對 一系列時間值的分鐘數求和。然后用函數dhcTime將分鐘數和轉換成小時和分鐘,并以相應 的格式HH:MM字符串輸出表示。

函數dhcMinutes程序如下所示,取出以字符串值 形式輸入的累計時間的小時值乘以60,再與累計時間的分鐘值相加,產生長整數表示的分 鐘數。

FunctiondhcMinutes(strTimeAsString)AsLongintPos=InStr(strTime,":")strHours=Left(strTime,intPos-1)strMinutes=Right(strTime,Len(strTime)-intPos)dhcMinutes=Val(strHours)*60+Val(strMinutes)EndFunction
函數dhcTime程序如下所示,將分鐘數用""運算符整 除得到小時數(用60整除的整數)。用MOD運算符得到分鐘數(用60整除的余數)。然后函數將輸 出格式化為通常的時間表示樣式。
FunctiondhcTime(lngMinutesAsLong)AsStringdhcTime=Format(lngMinutes60,"0")&":"&Format(lngMinutesMod60,"00")EndFunction
例如,要求3個時間長度100:03、21:15和0:34的和,可 用下列表達式:
dhcTime(dhcMinutes("100:03")+dhcMinutes("21:15")+dhcMinutes("0:34"))
表達式結果是字符串值"121:52"。

再如要求4個時間長度11:15、26:06、0:89和112:55 的和,可用下列表達式:

dhcTime(dhcMinutes("11:15")+dhcMinutes("26:06")+dhcMinutes("0:89")+dhcMinutes("112:55"))
表達式結果是字符串值"151:45"。

至于時間分隔符,本文以通常的格式HH:MM輸出表 示,也可以用WINDOWSAPI調用取得本機的時間分隔符,這里不再詳述。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗