0

在我使用 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 机器上,我收到错误异常,并显示此字符串对日期转换无效。

可以解决这样的代码在两台机器上都没有错误的情况吗?如何解决?

4

1 回答 1

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
于 2013-12-16T10:52:12.333 回答