Windows XP上的CDate

时间:2013-12-16 10:30:40

标签: .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,在这两种情况下,date都表示为带有日期和时间的字符串,以毫秒为单位。
我无法改变这一点,因为数据来自(不是我的)数据库。

在具有Windows 7的机器上运行正常但在Windows XP机器上我收到错误异常,并显示此字符串对于日期转换无效。

这可以解决这样的代码在两台机器上都能正常工作吗?

1 个答案:

答案 0 :(得分:1)

您想使用DateTime.ParseExact

此处提供了一个示例: http://msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx

根据您的需要更改此内容,如下所示:

    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