2017-03-14 3 views
0

Ich kann nicht herausfinden, warum ich einen DateTime Fehler in meinem Code bekomme?DateTime String Conversion Error

Der Fehler immer ist, wenn ein String übergeben wird

von

Conversion ist string "dd/MM/yyyy: 00" eintippen 'Date' ist nicht gültig

Wodurch aus mir trage ein Datum und Uhrzeit Parsen unter

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 

Datum Date.TryParseExact wie gezeigt

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 

Zeit Parsing

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 

es alle Kontrollen durchlaufen und dann erzeugt Fehler wie diese Linie

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

Die Zeichenfolge, die zum Beispiel in diesem ist 13/03/2017 :00 in Abhängigkeit von welchem ​​Zeitpunkt ist übergeben wird gewählt.

Irgendwelche Vorschläge bitte?

+0

Ihren Titel aus Reihe von spezifischen Format zu konvertieren ist einfach, Sie so in Details sollte nur diese (const) Zeichenfolge angeben, zu viel nicht relativer Code –

+0

Hi @LeiYang die Zeichenfolge, die übergeben wird, ist wie folgt 13.03.2017: 00' je nachdem, welches Datum Sie wählen – Kevin

+1

Sie haben ein seltsames Datumsformat Daher kann die Autokonvertierung die Zeichenfolge nicht in ein Datum konvertieren. Sie müssen es wieder genau analysieren –

Antwort

0

Das Problem wurde behoben. Ich habe einen Fehler in dieser Zeile gemacht, wo es dateEndTime statt dateStartTime hätte sein sollen.

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

So ist der endgültige Code, wie es steht, ist

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 

Weiß nicht, wie ich es verpasst :(