2017-03-14 26 views
0

私のコードにDateTimeエラーが表示されるのはなぜですか?文字列が渡されたときDateTime文字列変換エラー

エラーが取得しています文字列から

変換「DD/MM/YYYY:00」されておりますこれにより「日」を入力するためには、有効な

ではありません

If IsDate(dateEnd) Then 
    dateStartTime = If(IsTime(dateEndTime), dateEndTime, "00:00") 
    blog.DateEnd = String.Format("{0} {1}:00", dateEnd, dateEndTime) 
Else 
    blog.DateEnd = Nothing 
End If 

Date.TryParseExact

以下のように解析する日付と時刻210
Private Function IsDate(ByVal dateString As String) As Boolean 
    Dim output As Boolean = False 
    Dim dateFormat As String = "dd/MM/yyyy" 
    If Date.TryParseExact(dateString.Trim, dateFormat, New CultureInfo("en-GB"), DateTimeStyles.None, Nothing) Then 
     output = True 
    End If 
    Return output 
End Function 

時間解析

Private Function IsTime(ByVal timeString As String) As Boolean 
    Dim timeRegex As New Regex("([0-1]\d|2[0-3]):([0-5]\d)") 
    Return timeRegex.IsMatch(timeString) 
End Function 

をそれがすべてのチェックを通過した後で何日に応じ

blog.DateEnd = String.Format("{0} {1}:00", dateEnd, dateEndTime) 

に渡される文字列は、例えば、この13/03/2017 :00あるこのラインとしてエラーを生成します選ばれた

お願いします。

+0

あなたのタイトルはちょうどあなたがそう詳細に、特定の形式の文字列からの変換であります(const)文字列、あまり相対的でないコードを指定する必要があります –

+0

こんにちは@LeiYang渡す文字列は、あなたが選択した日付に応じて '13/03/2017:00'です。 – Kevin

+1

あなたは奇妙な日付形式です自動変換では文字列を日付に変換することはできません。あなたはそれを再び正確に解析する必要があります –

答えて

0

問題を解決しました。私はこの行に、dateStartTimeの代わりにdateEndTimeであったはずのエラーを作りました。

dateStartTime = If(IsTime(dateEndTime), dateEndTime, "00:00") 

ので、そのまま最終的なコードは、私はそれを逃したか

If IsDate(dateEnd) Then 
    dateEndTime = If(IsTime(dateEndTime), dateEndTime, "00:00") 
    blog.DateEnd = String.Format("{0} {1}:00", dateEnd, dateEndTime) 
Else 
    blog.DateEnd = Nothing 
End If 

わからないさ:(

関連する問題