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
我正在将 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