【发布时间】:2016-02-12 14:09:35
【问题描述】:
如何修复以下代码?
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
这是错误:
【问题讨论】:
-
尝试计算两个日期之间的天数并相应地运行循环。
标签: vb.net
如何修复以下代码?
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
这是错误:
【问题讨论】:
标签: vb.net
您可以使用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
【讨论】:
正如错误消息所暗示的,您不能通过向 Date 添加 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
【讨论】:
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
【讨论】: