用VB計算累計值
2019-11-18 17:52:31
供稿:網友
----VB無法在日期/時間字段中存放和測量累計時間,日期/時間存放成特定的時間點而不是一個時間跨度,并且無法在一個日期/時間變量中存放超過24小時的值。如輸入9:30,輸入的不是某臺設備工作的時間長度,而是一個特定時間,即是早晨9:30。在日期/時間字段中輸入26:30,VB會顯示出錯信息,認為這不是一個合法的輸入。VB不是不能進行日期/時間字段的累加計算,它在內部以浮點值的形式存放,能夠進行累加計算,但結果不是我們希望的那樣。
----筆者在工作中遇到計算累計時間問題,利用所編的兩個簡短的函數dhcTime和dhcMinutes,得到滿意的解決。函數dhcMinutes接受以字符串值形式輸入的累計時間作為參數,返回的時間值以分鐘數表示,這樣就可以方便地對一系列時間值的分鐘數求和。然后用函數dhcTime將分鐘數和轉換成小時和分鐘,并以相應的格式HH:MM字符串輸出表示。
----函數dhcMinutes程序如下所示,取出以字符串值形式輸入的累計時間的小時值乘以60,再與累計時間的分鐘值相加,產生長整數表示的分鐘數。
FunctiondhcMinutes(strTimeAsString)AsLong
intPos=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)AsString
dhcTime=Format(lngMinutes/60,"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調用取得本機的時間分隔符,這里不再詳述。->