0

フォームでは、次のように DateTimePicker を使用します。

With dtp_myDate
    .Format = DateTimePickerFormat.Custom
    .CustomFormat = "dd.MM.yyyy."
    .Value = CType("16.12.2013. 11:30:25.1234", Date)
End With

また、CType の代わりに CDate を使用することもできます。どちらの場合も、日付はミリ秒単位の日付と時刻の文字列として表されます。
データは (私のものではない) データベースから取得されるため、これを変更することはできません。

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 に答える