【问题标题】:How to find all Mondays in two date ranges如何在两个日期范围内查找所有星期一
【发布时间】:2016-01-22 14:45:06
【问题描述】:

我并试图获取使用输入的日期范围内的所有星期一日期的列表。我已经完成了大部分工作,只是无法弄清楚如何在开始日期和结束日期之间添加星期一并将它们放入列表框中的 for next 循环。

这不是家庭作业,而是我和一个朋友一起做的事情,因为我对 VB 也很陌生。

这就是我现在所拥有的。

Private Sub btnCountMondays_Click(sender As Object, e As EventArgs) Handles btnCountMondays.Click
    Dim startDate As Date
    Dim endDate As Date
    startDate = txtStartDate.Text
    endDate = txtEndDate.Text
    txtDaysBetween.Text = DateDiff("d", startDate, endDate)

    For monday As Integer = 0 To Val(txtDaysBetween.Text)
        If monday = 1 Then
            lstResultsBox.Items.Add()
        End If
    Next
End Sub

【问题讨论】:

  • 找到第一个星期一后,只需在该日期重复添加+7 天,直到您的结束日期。
  • 还要避免从文本到Date (DateTime) 值的隐式转换,尽可能使用DateTime.ParseExact

标签: vb.net date datetime dayofweek


【解决方案1】:

如果你必须使用 for 循环,你可以这样做

Private Sub btnCountMondays_Click(sender As Object, e As EventArgs) Handles btnCountMondays.Click
    Dim startDate As Date
    Dim endDate As Date
    startDate = CDate(txtStartDate.Text)
    endDate = CDate(txtEndDate.Text)
    Dim nDays As Long = DateDiff("d", startDate, endDate) + 1
    For i As Long = 1 To nDays
        If startDate.DayOfWeek = DayOfWeek.Monday Then
            lstResultsBox.Items.Add(startDate.ToString("dd-MM-yyyy"))
        End If
        startDate = startDate.AddDays(1)
    Next
End Sub

【讨论】:

  • 谢谢这正是我一直在寻找的,完美的工作。非常感谢您的帮助。
【解决方案2】:

获取两个日期之间所有星期一的日期列表。获取日期的愤怒。并在循环期间获取星期几

Dim dt1 As New DateTime(2012, 5, 1)
Dim dt2 As DateTime = DateTime.Now
Dim ddl As New List(Of String)()
While dt1 < dt2
    Dim dow As DayOfWeek = dt1.DayOfWeek
    'enum
    Dim str As String = dow.ToString()
    'string
    If str.ToLower() = "monday" Then

        ddl.Add(dt1.ToString("dd-MMM-yyyy"))
    End If


    dt1 = dt1.AddDays(1)
End While

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 2013-05-02
    • 2020-10-09
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    相关资源
    最近更新 更多