2007年11月17日土曜日

[VB.NET]時間を数値化、数値を時間化

Public Class Common
  Dim cs As New CSScript
  '*** strTimeに入っている値を数値(分)に変換して返します。 ***
  ' strTime : 計算対象の時間。必ずhh:mm形式で入力するようにしてください。
  ' 変換できないときは0を返します。
  Public Function 時間_数値化(ByVal strTime As Object) As Long
    Dim wkHour As Long
    Dim wkMinute As Long
    If strTime = "" Then
      時間_数値化 = 0
      Exit Function
    End If
    '時間を取得
    On Error Resume Next
    wkHour = Left(strTime, InStr(1, strTime, ":") - 1)
    wkMinute = Right(strTime, 2)
    If Err.Number = 0 Then
      時間_数値化 = wkHour * 60 + wkMinute
    Else
      時間_数値化 = 0
    End If
  End Function
  '*** ↑の処理で数値化された時間を元に戻します。変換失敗時は空文字列を返します ***
  Public Function 数値_時間化(ByVal lngTime) As String
    If cs.IsNull(lngTime) Then
      数値_時間化 = ""
      Exit Function
    End If
    On Error Resume Next
    数値_時間化 = Fix(lngTime / 60) & ":" & Format(lngTime Mod 60, "00")
    If Err.Number <> 0 Then
      数値_時間化 = ""
    End If
  End Function
End Class

前にやった業務(トラウマ)でこんなことをしていたので、使えるかもしれないからメモっておきますね。
まぁこれの元が滅茶苦茶なExcelVBAで、VB.NETで使いたくなって少し改変したのだけれど、
メソッド名が漢字なのはその名残だと思ってください。

0 件のコメント: