Try
Dim tm As datetime = datetime.parse(textbox1.text.trim)
Dim sTime As String = tm.toString("yyyy/MM")
Catch ex1 As Exception
messagebox.show("格式錯誤!")
End Try
Try
Dim tm As datetime = datetime.parse(textbox1.text.trim)
Dim sTime As String = tm.toString("yyyy/MM")
Catch ex1 As Exception
messagebox.show("格式錯誤!")
End Try
我又重新整理了一下。
--------------------------------------------------------------------------
Private Function DateFormat(ByVal str As String) As String
Dim sYear As String
Dim sMon As String
Dim ErrMsg As String = "日期格式错误!"
Dim i As Int32 = Strings.InStr(str, "/")
Select Case str.Length
Case 7
'yyyy/mm
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 4 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 2 Then
sMon = Strings.Mid(str, i + 1)
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
Case 6
'yyyy/m
If i <> 0 Then
If Strings.Left(str, i - 1).Trim.Length = 4 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 1 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
Else
'yyyymm
sYear = Strings.Left(str, 4).Trim
sMon = Strings.Right(str, 2)
End If
Case 5
'yy/mm
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 2 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 2 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
Case 4
'yy/m
If i <> 0 Then
If Strings.Left(str, i - 1).Trim.Length = 2 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 1 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
Else
'yymm
If Strings.Left(str, 2).Trim.Length = 2 Then
sYear = Strings.Left(str, 2).Trim
If Strings.Right(str, 2).Trim.Length = 2 Then
sMon = Strings.Right(str, 2).PadLeft(2, "0")
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
End If
Case Else
Throw New Exception(ErrMsg)
End Select
If sYear.Trim.Length = 2 Then
sYear = Strings.Left(Now.Year, 2) & sYear
End If
刚写出来的,给D意见。
Private Function DateFormat(ByVal str As String) As String
Dim sYear As String
Dim sMon As String
Dim i As Int32 = Strings.InStr(str, "/")
Select Case str.Length
Case 7
'yyyy/mm
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 4 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 2 Then
sMon = Strings.Mid(str, i + 1)
End If
End If
End If
Case 6
'yyyy/m
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 4 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 1 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
End If
End If
End If
'yyyymm
If i = 0 Then
sYear = Strings.Left(str, 4).Trim
sMon = Strings.Right(str, 2)
End If
Case 5
'yy/mm
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 2 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 2 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
End If
End If
End If
Case 4
'yy/m
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 2 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 1 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
Else
Throw New Exception("格式错误!")
End If
Else
Throw New Exception("格式错误!")
End If
End If
'yymm
If i = 0 Then
If Strings.Left(str, 2).Trim.Length = 2 Then
sYear = Strings.Left(str, 2).Trim
If Strings.Right(str, 2).Trim.Length = 2 Then
sMon = Strings.Right(str, 2).PadLeft(2, "0")
Else
Throw New Exception("格式错误!")
End If
Else
Throw New Exception("格式错误!")
End If
End If
End Select
If sYear.Trim.Length = 2 Then
sYear = Strings.Left(Now.Year, 2) & sYear
End If
Try
Dim a As datetime = datetime.parse(textbox1.text.trim)
Dim sTime As String = a.toString("yyyy/MM")
Catch e1 As Exception
messagebox.show("格式錯誤!")
End Try