【问题标题】:For next loop for date value对于日期值的下一个循环
【发布时间】: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


【解决方案1】:

您可以使用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】:

    正如错误消息所暗示的,您不能通过向 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
    

    【讨论】:

      【解决方案3】:
      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-10
        • 1970-01-01
        • 2022-01-05
        • 2020-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多