datediff 函数比较分钟范围

datediff function to compare minute range

我正在将 sheet 中的所有数据复制到变体数组中。第 1 列具有如下时间戳。

Thu Mar 02 01:14:28 EST 2017

我想在 1 分钟的时间内处理所有行。我正在使用 datediff 函数找出分钟的差异。但不知何故,它没有按预期工作。 这是代码。

    For i = 1 To UBound(vBaseArray)
          dSavedDate = convertDate(vBaseArray(i,1)) 'function to convert string to date
.....          some code
          For j = i To UBound(vBaseArray) 'function to convert string to date

               If DateDiff("n", dSearchDate, dSavedDate) >= 1 And DateDiff("n", dSearchDate, dSavedDate) <= 2 Then

                 ----some code

但结果并不如预期 如果 dSavedDate 是 Thu Mar 02 01:14:28 EST 2017 那么 if 语句在时间戳后返回我

Thu Mar 02 01:12:24 EST 2017

Thu Mar 02 01:12:44 EST 2017

Thu Mar 02 01:12:40 EST 2017

Thu Mar 02 00:47:12 EST 2017

而我想要时间戳 >= dSavedDate 的 1 分钟

我做错了什么?

Date 变量在内部表示为 Double,时间部分是小数点右边的小数天。您可以直接减去它们并使用增量来查看它们是否在一分钟内:

Public Function WithinOneMinute(first As Date, second As Date) As Boolean
    Const ONE_MINUTE As Double = 1 / 24 / 60
    Dim difference As Date
    difference = Abs(first - second)
    WithinOneMinute = difference <= ONE_MINUTE
End Function

然后你可以像这样在你的循环中调用它:

    For i = 1 To UBound(vBaseArray)
      dSavedDate = convertDate(vBaseArray(i, 1))
      For j = i To UBound(vBaseArray)
           If Not WithinOneMinute(dSearchDate, dSavedDate) Then