我需要在过去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
这是有效的,如果我运行这个广告例如9:12,间隔15分钟我得到最后几天的所有小时有分钟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
稍微清洁的选择;
startdate = DateTime.Today.AddDays(-7)
https://docs.microsoft.com/en-us/dotnet/api/system.datetime.today?view=netframework-4.7.2