获取给定间隔下两个日期之间的所有时间

时间:2019-03-29 12:28:30

标签: vb.net time intervals

我需要从最近7天开始以给定的间隔获取指定的时间。目前,我正在使用以下代码:

 If startdate = Nothing Then
        startdate = Date.Now.AddDays(-7)
    End If
    If enddate = Nothing Then
        enddate = Date.Now
    End If

    Dim curstartdate As DateTime = startdate
    Dim curenddate As New DateTime


    While curenddate < DateTime.Now
        Select Case ComboBox1.SelectedItem
            Case "every 15 minutes"
                curenddate = curstartdate.AddMinutes(15)
            Case "every 30 minutes"
                curenddate = curstartdate.AddMinutes(30)
            Case "every hour"
                curenddate = curstartdate.AddHours(1)
            Case "every 2 hours"
                curenddate = curstartdate.AddHours(2)
            Case "every 3 hours"
                curenddate = curstartdate.AddHours(3)
            Case "every 6 hours"
                curenddate = curstartdate.AddHours(6)
            Case "every 12 hours"
                curenddate = curstartdate.AddHours(12)
            Case "every 24 hours"
                curenddate = curstartdate.AddHours(24)
        End Select

     ***DO SOME FANCY STUFF***
     curstartdate = curenddate
   end while

这是有效的,如果我以15分钟的间隔运行此广告(例如9:12),我会得到过去几天的所有小时,包括分钟12,27,42,57 ...,如果代码为速度较慢(这是由于外部因素造成的),即使我仍然是9:12,我也会得到从9:12到9:27的最后一个时间段。

我需要它返回引用到00小时(7天前的午夜)的值。因此,00,15,30,45 ..和最后一个时间应该保留(因此,没有任何超越现在的时间段)

我该怎么办?


*编辑:我是这样做的,这是解决问题的好方法吗? *

 If startdate = Nothing Then          
        startdate = New DateTime(Now.AddDays(-7).Year, Now.AddDays(-7).Month, Now.AddDays(-7).Day, 0, 0, 0)
    End If
    If enddate = Nothing Then
        enddate = Date.Now
    End If

    Dim curstartdate As DateTime = startdate
    Dim curenddate As New DateTime


    While curenddate < DateTime.Now
        Select Case ComboBox1.SelectedItem
            Case "every 15 minutes"
                curenddate = curstartdate.AddMinutes(15)
            Case "every 30 minutes"
                curenddate = curstartdate.AddMinutes(30)
            Case "every hour"
                curenddate = curstartdate.AddHours(1)
            Case "every 2 hours"
                curenddate = curstartdate.AddHours(2)
            Case "every 3 hours"
                curenddate = curstartdate.AddHours(3)
            Case "every 6 hours"
                curenddate = curstartdate.AddHours(6)
            Case "every 12 hours"
                curenddate = curstartdate.AddHours(12)
            Case "every 24 hours"
                curenddate = curstartdate.AddHours(24)
        End Select


          ***DO SOME FANCY STUFF***

  curstartdate = curenddate
end while

1 个答案:

答案 0 :(得分:0)

稍微清洁一点的选项;

startdate = DateTime.Today.AddDays(-7)

https://docs.microsoft.com/en-us/dotnet/api/system.datetime.today?view=netframework-4.7.2

相关问题