比较日期时遇到问题:
Sub Main()
Dim xlApp, xlApp1, xlApp2 As Excel.Application
Dim xlWorkBook, xlWorkBook1, xlWorkBook2 As Excel.Workbook
Dim xlWorkSheet, xlWorkSheet1, xlWorkSheet2 As Excel.Worksheet
Dim folder, m, n As String
Dim subfolders As String()
Dim i, j, c, k, l, lastrow As Integer
Dim fec,temp As Date
Dim nulls As Boolean
nulos = False
folder = My.Application.Info.DirectoryPath
ChDir(CurDir())
subfolders = IO.Directory.GetDirectories(CurDir())
xlApp = New Excel.ApplicationClass
xlApp2 = New Excel.ApplicationClass
xlApp1 = New Excel.ApplicationClass
Try
xlWorkBook = xlApp.Workbooks.Open("d:\File where data will be copied.xlsx")
xlWorkSheet = xlWorkBook.Worksheets("SheetName")
xlWorkSheet.Activate()
xlWorkBook2 = xlApp2.Workbooks.Open("d:\File Where Dates Are Recorded.xlsx")
xlWorkSheet2 = xlWorkBook2.Worksheets("SheetName")
xlWorkSheet2.Activate()
i = 2
For Each f1 In subfolders
ChDir(f1)
m = Dir("*.xlsx")
Do While m <> ""
If Strings.Left(m, 6) = "DOC_ID" Then
j = 2
Do While xlWorkSheet2.Cells(j, 1).Value <> ""
If xlWorkSheet2.Cells(j, 1).Value = m Then
fec = xlWorkSheet2.Cells(j, 2).value
'Check if last write date is the same as the one recorded in the file
temp = File.GetLastWriteTime(CurDir() & "\" & m)
If fec <> File.GetLastWriteTime(CurDir() & "\" & m) Then
.
.
.
在最后一行
If fec <> File.GetLastWriteTime(CurDir() & "\" & m)
我将文件的修改日期与工作表单元格中存储的日期作为日期格式进行比较。 调试时,fec和temp具有相同的值(已经在调试器中测试过)但它仍然进入if条件...为什么?有什么想法吗?
本地化窗口中的值:
fec#11/15/2013 6:06:01 PM#
temp#11/15/2013 6:06:01 PM#
答案 0 :(得分:2)
请尝试使用此代码:
if DateTime.Compare(fec, temp) <> 0 then
比较某些值(例如字符串和日期)通常使用与数据类型相关联的内置函数比使用&#39; =&#39;更好。运营商。另见:http://msdn.microsoft.com/en-us/library/system.datetime.compare(v=vs.110).aspx
答案 1 :(得分:2)
=
和<>
基本上只是比较DateTime.Ticks
。您可能希望输出fec.Ticks
和File.GetLastWriteTime(...).Ticks
以进行调试。毫秒等于10,000个滴答。
如果它们相差一整小时,您可能需要检查DateTime.Kind
。可能是一个是UTC,另一个是你当地的时区。如果是这种情况,您需要补偿差异。