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
' TimeTest.vb
' Demonstrating class CTime.

    Imports System.Windows.Forms

Module modTimeTest

    Sub Main()
        Dim time As New CTime   ' call CTime constructor
        Dim output As String

        output = "The initial universal times is: " & _
            time.ToUniversalString() & vbCrLf & _
            "The initial standard time is: " & _
            time.ToStandardString()

        time.SetTime(13, 27, 6) ' set time with valid settings

        output &= vbCrLf & vbCrLf & _
           "Universal time after setTime is: " & _
           time.ToUniversalString() & vbCrLf & _
           "Standard time after setTime is: " & _
           time.ToStandardString()

        time.SetTime(99, 99, 99) ' set time with invalid settings

        output &= vbCrLf & vbCrLf & _
           "After attempting invalid settings: " & vbCrLf & _
           "Universal time: " & time.ToUniversalString() & _
           vbCrLf & "Standard time: " & time.ToStandardString()

        MessageBox.Show(output, "Testing Class CTime")
    End Sub ' Main

End Module ' modTimeTest

