VB中的DateDiff ...查找6个月的间隔

时间:2014-08-06 14:37:11

标签: vb.net datediff

我的代码是:

    Try
        For Each fi As IO.FileInfo In New IO.DirectoryInfo(BACKUP).GetFiles()
            If DateDiff(DateInterval.Month, fi.LastWriteTime, Now) > 6 Then
                fi.Delete()
            End If
        Next

我只是想知道为什么它不会从02/04/2014删除文件。这是超过6个月前,但文件仍然存在。关于为什么会这样做的任何提示?

3 个答案:

答案 0 :(得分:0)

Dim Date1 As New Date(2014, 2, 4) ' fi.LastWriteTime
Dim Date2 As Date = Now ' 08/06/2014
Dim Diff As Long = DateDiff(DateInterval.Month, Date1, Date2)

Diff等于 6 > 6等于 至少 7 6 不高于 6

答案 1 :(得分:0)

来自MSDN documentation;

更大的间隔。如果Interval设置为DateInterval.Year,则返回值仅从Date1和Date2的年份部分计算。类似地, DateInterval.Month 的返回值完全根据参数的年份和月份部分计算,而DateInterval.Quarter则来自包含两个日期的季度。

所以在这种情况下,结果将是6 - 即08减去02 - 这未通过测试。

答案 2 :(得分:0)

两个答案都提供了原因,但都没有提供解决方案。改变这个:

If DateDiff(DateInterval.Month, fi.LastWriteTime, Now) > 6 Then

对此:

If DateDiff(DateInterval.Month, fi.LastWriteTime, Now) >= 6 Then