我正在创建一个程序,其中有一个函数可以检查数据库中是否有用户未被调用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
答案 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