vb.net字符串未被识别为有效的DateTime

时间:2015-05-21 09:26:40

标签: vb.net

我的VB应用程序中有以下函数名为setdateformat。

Public Function SetDateFormat(ByVal ArrayInputString As String) As String

   Dim FormattedDateString As String = ""
   Dim DateInput As DateTime = DateTime.Parse(ArrayInputString)
   FormattedDateString = DateInput.ToString("yyyy-MM-dd HH:mm:ss")
   Return FormattedDateString

End Function

它的目的是格式化日期,但它会继续落在Dim DateInput As DateTime = DateTime.Parse(ArrayInputString)行。我试过在网上四处寻找并调查但无济于事。我尝试过使用dateTime.ParseExact,但没有运气。

我真的很难理解为什么这个错误对我来说是诚实的,因此这篇文章的原因所以任何帮助都非常感激。

我已经调试了解决方案,但是为了帮助任何阅读此内容的人都了解以下值正在变量中传递

ArrayInputString = 21/05/2015 09:29:41

Date Date Now = 05/21/2015 09:29:41

任何协助都将很乐意带上

2 个答案:

答案 0 :(得分:1)

/在日期解析方面具有特殊的含义和功能:它意味着“用当前文化的实际日期分隔符替换我”。所以我想你的真实日期分隔符与.-不同。

如果你看一下调试器,它总是使用不变的文化而不是你的文化,这就解释了为什么你会看到像5/21/2015 11:39:26 AM这样的日期。

您可以尝试多种方法:

Public Function SetDateFormat(ByVal inputString As String) As String
    Dim DateInput As DateTime
    Dim allowedCultures = {CultureInfo.CurrentCulture, CultureInfo.InvariantCulture}
    For Each culture In allowedCultures
        If Date.TryParse(inputString, culture, DateTimeStyles.None, DateInput) Then
            Return DateInput.ToString("yyyy-MM-dd HH:mm:ss")
        End If
    Next
    ' try ParseExact:
    Dim formats = {"yyyy-MM-dd HH:mm:ss", "dd/MM/yyyy HH:mm:ss"}
    If Date.TryParseExact(inputString, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, DateInput) Then
        Return DateInput.ToString("yyyy-MM-dd HH:mm:ss")
    Else
        Return Nothing
    End If
End Function

文档:The "/" Custom Format Specifier

答案 1 :(得分:1)

您还可以在#In;中将ArrayInputString包装起来,并在将DateInput变为FormattedDateString之前将其调暗为日期。

Dim DateInput As Date = CDate("#" & ArrayInputString & "#")
FormattedDateString = DateInput.ToString("yyyy-MM-dd HH:mm:ss")