我的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
任何协助都将很乐意带上
保
答案 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
答案 1 :(得分:1)
您还可以在#In;中将ArrayInputString包装起来,并在将DateInput变为FormattedDateString之前将其调暗为日期。
Dim DateInput As Date = CDate("#" & ArrayInputString & "#")
FormattedDateString = DateInput.ToString("yyyy-MM-dd HH:mm:ss")