
    ' CTime.vb
    ' Represents time in 24-hour format.

    Class CTime
        Inherits Object

        ' declare Integer instance values for hour, minute and second
        Private mHour As Integer ' 0 - 23
        Private mMinute As Integer ' 0 - 59
        Private mSecond As Integer ' 0 - 59

        ' Method New is the CTime constructor method, which initializes
        ' instance variables to zero
        Public Sub New()
            SetTime(0, 0, 0)
        End Sub ' New

        ' set new time value using universal time; 
        ' perform validity checks on data;
        ' set invalid values to zero
        Public Sub SetTime(ByVal hourValue As Integer, _
             ByVal minuteValue As Integer, ByVal secondValue As Integer)

            ' check if hour is between 0 and 23, then set hour
            If (hourValue >= 0 AndAlso hourValue < 24) Then
                mHour = hourValue
            Else
                mHour = 0
            End If

            ' check if minute is between 0 and 59, then set minute
            If (minuteValue >= 0 AndAlso minuteValue < 60) Then
                mMinute = minuteValue
            Else
                mMinute = 0
            End If
            ' check if second is between 0 and 59, then set second
            If (secondValue >= 0 AndAlso secondValue < 60) Then
                mSecond = secondValue
            Else
                mSecond = 0
            End If

        End Sub ' SetTime

        ' convert String to universal-time format
        Public Function ToUniversalString() As String
            Return String.Format("{0}:{1:D2}:{2:D2}", _
               mHour, mMinute, mSecond)
        End Function ' ToUniversalString

        ' convert to String in standard-time format
        Public Function ToStandardString() As String
            Dim suffix As String = " PM"
            Dim format As String = "{0}:{1:D2}:{2:D2}"
            Dim standardHour As Integer

            ' determine whether time is AM or PM
            If mHour < 12 Then
                suffix = " AM"
            End If

            ' convert from universal-time format to standard-time format
            If (mHour = 12 OrElse mHour = 0) Then
                standardHour = 12
            Else
                standardHour = mHour Mod 12
            End If

            Return String.Format(format, standardHour, mMinute, _
               mSecond) & suffix
        End Function ' ToStandardString
    End Class ' CTime   
