将字符串转换为DateTime时出现问题

时间:2014-08-19 13:46:10

标签: vb.net excel datetime date-parsing

我正在创建一个程序,其中有一个函数可以检查数据库中是否有用户未被调用2周或更长时间,并在ListView中显示它们。

在这部分中,我正在检查它们被召唤的时间:

Dim r As Int32 = excelWS.UsedRange.Rows.Count
Dim bel As New ArrayList
For nm As Int32 = 1 To r Step 1
    If Convert.ToInt32(DateDiff("ww", Date.ParseExact(excelWS.Cells(nm, 1).value(), "yyMMddhhmm", System.Globalization.DateTimeFormatInfo.InvariantInfo), Now, FirstDayOfWeek.Monday, FirstWeekOfYear.Jan1)) >= My.Settings.Tijdverschil Then
        bel.Add(nm)
    End If
Next

我得到FormatException在if行未处理。 它在错误描述中说(大致翻译成英文):

  

在有效的DateTime时无法识别令牌。


- 编辑 -

如果有人认为excel中的格式错误,我复制了一个字段,它们都是这样的。

  

1408180736

2 个答案:

答案 0 :(得分:0)

这样做的诀窍是将应用程序集中的日期时间选择器设置为false。

然后将字符串设置为日期时间选择器的值,并使用日期时间选择器来获取日期之间的差异。

答案 1 :(得分:0)

如果没有其他信息,我想知道您的Excel日期是否作为OLE自动化日期进入。根据您从Excel中读取数据的方式,它可能会以这种格式返回。

如果是,则需要将其解析为double,然后再解析为OLEDate。像这样:

        Dim oleDate as Double
        Dim result as DateTime
        If Double.TryParse(excelWS.Cells(nm, 1).value(), oleDate) Then
            ' Handle valid OLE Automation dates...
            result = DateTime.FromOADate(oleDate)
        End If