2016-02-12 74 views
0

如何解决以下代码?对于日期值的下一个循环

Dim xx As Date = New DateTime(2016, 1, 1) 
Dim yy As Date = New DateTime(2016, 12, 31) 
For ii = xx To yy 
    MsgBox(ii) 
Next ii 

这是错误:

enter image description here

+0

尝试计算两个日期之间的天数和相应的运行循环。 – Linga

回答

2

您可以使用While循环:

While xx <= yy 
    MsgBox(xx) 
    xx = xx.AddDays(1) 
End While 

或者Enumerable.Range

Dim days = Enumerable.Range(0, Convert.ToInt32((yy-xx).TotalDays)) 
    .Select(Function(i) xx.AddDays(i)) 
For Each DateTime day in days 
    MsgBox(day) 
Next day 

(它看起来很复杂,但它是很好的开始描述数据的角度思考而不是构建循环)。

还是一个For循环:

Dim count = Convert.ToInt32((yy-xx).TotalDays) 
For i As Integer To Count 
    MsgBox(xx.AddDays(i)) 
Next i 
2

由于错误信息提示,您不能通过增加1来递增日期。假设你打算做的是增加一天,你可以使用AddDays方法。

Dim xx As Date = New DateTime(2016, 12, 29) 
    Dim yy As Date = New DateTime(2016, 12, 31) 
    Dim ii As Date = xx 
    Do Until ii > yy 
     MessageBox.Show(ii.ToShortDateString) 
     ii = ii.AddDays(1) 
    Loop 
1
Dim xx As Date = New DateTime(2016, 1, 1) 
Dim yy As Date = New DateTime(2016, 12, 31) 

Dim intNumDays As Integer = CInt(Math.Ceiling((yy - xx).TotalDays)) 
For ii As Integer = 0 To intNumDays - 1 
    MsgBox(xx.AddDays(ii)) 
Next ii