.net windows XP上的CDate

.net windows XP上的CDate,.net,vb.net,datetime,datetimepicker,datetime-parsing,.net,Vb.net,Datetime,Datetimepicker,Datetime Parsing,在我使用DateTimePicker的形式中,如下所示: With dtp_myDate .Format = DateTimePickerFormat.Custom .CustomFormat = "dd.MM.yyyy." .Value = CType("16.12.2013. 11:30:25.1234", Date) End With 我也可以使用CDate而不是CType,在这两种情况下,日期都表示为带有日期的字符串,时间表示为毫秒。 我不能改变这个,因为数据来

在我使用DateTimePicker的形式中,如下所示:

With dtp_myDate
    .Format = DateTimePickerFormat.Custom
    .CustomFormat = "dd.MM.yyyy."
    .Value = CType("16.12.2013. 11:30:25.1234", Date)
End With
我也可以使用CDate而不是CType,在这两种情况下,日期都表示为带有日期的字符串,时间表示为毫秒。
我不能改变这个,因为数据来自(不是我的)数据库

在windows 7正常工作的机器上,但在windows XP机器上,我收到错误异常消息,该字符串对于日期转换无效


这样的代码在两台机器上都能正常工作,这可以解决吗?您想使用
DateTime.ParseExact

此处提供了一个示例:

将此更改为您的需要,如下所示:

    Dim dateString, format As String
    Dim result As Date
    Dim provider As CultureInfo = CultureInfo.InvariantCulture

    ' Parse date-only value with invariant culture.
    dateString = "16.12.2013. 11:30:25.1234"
    format = "dd.MM.yyyy. hh:mm:ss.ffff"
    Try
        result = Date.ParseExact(dateString, format, provider)
        Debug.WriteLine("{0} converts to {1}", dateString, result.ToString())
        dtp_myDate.Value = result
    Catch ex As FormatException
        Debug.WriteLine("{0} is not in the correct format", dateString)
    End Try
输出:

16.12.2013. 11:30:25.1234 converts to 16/12/2013 11:30:25

谢谢马特的详细解释。示例工作与预期一致。