Here's a simple function that will take a string formatted like any of your inputs and the format you specify, and returns a string formatted like your outputs:
Private Function FormatTime(Input As String, Format as String) As String
Dim TimeFormat As New DateTime
Dim GoodString As Boolean = DateTime.TryParse(Input, TimeFormat)
If Not GoodString Then
If Integer.TryParse(Input, vbNull) Then
If Input.Length > 2 Then
Input = Input.PadLeft(4, "0"c)
TimeFormat = New DateTime(Now.Year, Now.Month, Now.Day, Integer.Parse(Input.Substring(0, 2)), Integer.Parse(Input.Substring(2)), 0)
Else
TimeFormat = New DateTime(Now.Year, Now.Month, Now.Day, Integer.Parse(Input.PadLeft(2, "0"c).Substring(0, 2)), 0, 0)
End If
End If
End If
Return TimeFormat.ToString(Format)
End Function
This does simple validating as well. It checks for proper time format and if not, if all characters are digits
Your statement would look like this:
`TimeFormatVariable = FormatTime(OriginalTimeInput, "hhmm")