用VB計算累計時間值
發表于:2007-07-14來源:作者:點擊數:
標簽:
郵電部第三研究所 張寶國 ---- VB 無 法 在 日 期/ 時 間 字 段 中 存 放 和 測 量 累 計 時 間, 日 期/ 時 間 存 放 成 特 定 的 時 間 點 而 不 是 一 個 時 間 跨 度, 并 且 無 法 在 一 個 日 期/ 時 間 變 量 中 存 放 超 過24 小 時 的 值。 如 輸
郵電部第三研究所 張寶國
---- VB 無 法 在 日 期/ 時 間 字 段 中 存 放 和 測 量 累 計 時 間, 日 期/ 時 間 存 放 成 特 定 的 時 間 點 而 不 是 一 個 時 間 跨 度, 并 且 無 法 在 一 個 日 期/ 時 間 變 量 中 存 放 超 過24 小 時 的 值。 如 輸 入9:30, 輸 入 的 不 是 某 臺 設 備 工 作 的 時 間 長 度, 而 是 一 個 特 定 時 間, 即 是 早 晨9:30。 在 日 期/ 時 間 字 段 中 輸 入26:30,VB 會 顯 示 出 錯 信 息, 認 為 這 不 是 一 個 合 法 的 輸 入。VB 不 是 不 能 進 行 日 期/ 時 間 字 段 的 累 加 計 算, 它 在 內 部 以 浮 點 值 的 形 式 存 放, 能 夠 進 行 累 加 計 算, 但 結 果 不 是 我 們 希 望 的 那 樣。
---- 筆 者 在 工 作 中 遇 到 計 算 累 計 時 間 問 題, 利 用 所 編 的 兩 個 簡 短 的 函 數 dhcTime 和 dhcMinutes , 得 到 滿 意 的 解 決。 函 數dhcMinutes 接 受 以 字 符 串 值 形 式 輸 入 的 累 計 時 間 作 為 參 數, 返 回 的 時 間 值 以 分 鐘 數 表 示, 這 樣 就 可 以 方 便 地 對 一 系 列 時 間 值 的 分 鐘 數 求 和。 然 后 用 函 數dhcTime 將 分 鐘 數 和 轉 換 成 小 時 和 分 鐘, 并 以 相 應 的 格 式HH:MM 字 符 串 輸 出 表 示。
---- 函 數dhcMinutes 程 序 如 下 所 示, 取 出 以 字 符 串 值 形 式 輸 入 的 累 計 時 間 的 小 時 值 乘 以60, 再 與 累 計 時 間 的 分 鐘 值 相 加, 產 生 長 整 數 表 示 的 分 鐘 數。
Function dhcMinutes(strTime As String) As Long
intPos = InStr(strTime, ":")
strHours = Left(strTime, intPos - 1)
strMinutes = Right(strTime, Len(strTime) - intPos)
dhcMinutes = Val(strHours) * 60 + Val(strMinutes)
End Function
---- 函 數dhcTime 程 序 如 下 所 示, 將 分 鐘 數 用"" 運 算 符 整 除 得 到 小 時 數( 用60 整 除 的 整 數)。 用MOD 運 算 符 得 到 分 鐘 數( 用60 整 除 的 余 數)。 然 后 函 數 將 輸 出 格 式 化 為 通 常 的 時 間 表 示 樣 式。
Function dhcTime(lngMinutes As Long) As String
dhcTime = Format(lngMinutes 60, "0") & ":"
& Format(lngMinutes Mod 60, "00")
End Function
---- 例 如, 要 求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 輸 出 表 示, 也 可 以 用WINDOWS API 調 用 取 得 本 機 的 時 間 分 隔 符, 這 里 不 再 詳 述。
原文轉自:http://www.anti-gravitydesign.com