vb.net - 从vba迁移到vb.net- 正确使用Iserror的逻辑

vb.net - 从vba迁移到vb.net- 正确使用Iserror的逻辑,第1张

我试图使用此代码:

@interface ImplementationClass () {
    TWPLoadUnitEnum loadUnit;
    BOOL recosMatchTargets;
}

我的目标是为" MyString"分配价值。只有" Convert.ToDateTime"给出一个有效的值,但代码不会这样做:当String没有被识别为有效的DateTime而不是执行" else"代码。

最佳答案:

3 个答案:

答案 0 :(得分:0)

您应该使用DateTime.TryParse:

https://msdn.microsoft.com/en-us/library/9h21f14e(v=vs.110).aspx

答案 1 :(得分:0)

如果您不确切知道接收字符串的格式是什么,那么您需要为DateTime.TryParseExact提供一组可能的格式。

以下示例是上面代码的简化测试版本

Sub Main
    Dim dateConverted as DateTime
    Dim testDate = "asdfasldka:08/05/2015 13:10"
    Dim yourWannaBeDate = testDate.Substring(testDate.IndexOf(":")   1).Trim()
    Dim possibleFormats = new string() {"d/M/yyyy", "d/M/yyyy H:m", "d/M/yy", "d/M/yy H:m"}
    if DateTime.TryParseExact(yourWannaBeDate, possibleFormats, CultureInfo.CurrentCulture, DateTimeStyles.None, dateConverted) then
        Console.WriteLine(dateConverted.ToString("yyyy-MM-dd"))
    else
        Console.WriteLine("Not a date")
    End if
End Sub

以上代码将匹配“08/05/2015”,“2015年8月5日”,“08/05/15”以及时间部分为两位或一位数格式的相同字符串

诀窍在于传递一系列可能的格式,这些格式可用于解释CurrentCulture中的日期(我假设您的PC具有与上述格式匹配的文化,但是,如果不是这种情况,则初始化一个新的CultureInfo变量并在TryParseExact中使用它

答案 2 :(得分:0)

我想感谢莱昂纳多的小费。这是我成功使用的代码:

Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture("it-IT")
Dim DateResult As DateTime
Dim styles As DateTimeStyles = DateTimeStyles.None
Dim mTmpDate As String

mTmpDate = DatiBase(i).innertext.substring(DatiBase(i).innertext.indexof(":")   1).trim()

If DateTime.TryParse(mTmpDate, culture, styles, DateResult) Then
    MyString = "'" & DateResult.ToString("yyyy-MM-dd HH:mm") & "'"
Else
    'Do something else
End If

代码适用于“意大利风格”和“MyString”中的任何日期。我得到格式为mySql需要的日期/时间(对于时间戳字段)。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复