查找每个星期六和星期日两个日期间隔(.NET)

时间:2014-01-21 17:12:36

标签: .net vb.net date visual-studio-2013

我知道有很多这样的问题,但我在.NET中找不到任何问题。所以......

我已经在一个程序上工作了好几天,我已经编写了几千行代码。但我现在面临着一个很大的困境。

我是.NET的新手,我在Visual Studio 2013中工作。我正在尝试找到一种最简单的方法来执行以下操作:

我有这些物品:

DateTimePicker1; DateTimePicker2; ListBox1的; Button1的; LABEL1; LABEL2

DateTimePicker1 中,用户选择开始日期。让我们说1. 2014年1月。 在 DateTimePicker2 中,用户选择结束日期。比如说,2014年7月1日。

现在,我需要程序做的是,当用户点击 Button1 时,以下内容将显示在 Label1 Label2

Label1 将在 DateTimePicker 1和2 中选择的日期之间显示一个数字的总天数。 label2 将显示在这两个日期之间的每个星期日和星期六 DateTimePicker 1和2 WITHOUT 中选择的日期之间的总天数。

此外,在 DateTimePicker 1和2 中选择的日期之间的每个星期六和星期日的日期将被添加到ListBox1。

有没有人可以帮助我?这对我来说是一个重要的项目,我仍然有大约40%的编码,但这阻止了我。在我解决之前,我无法继续处理我的程序。非常感谢你。

3 个答案:

答案 0 :(得分:3)

这是LINQ查询,用于枚举两个日期范围内的工作日:

Dim endDate As DateTime = DateTime.Now
Dim startDate As DateTime = endDate.AddDays(-13.0)
Dim workDays As List(Of DateTime) = 
Enumerable.Range(0, endDate.Subtract(startDate).TotalDays) _
      .Select(Function(i As Integer) startDate.AddDays(i)) _
      .Where(Function(dt As DateTime) dt.DayOfWeek <> DayOfWeek.Saturday _
                              AndAlso dt.DayOfWeek <> DayOfWeek.Sunday) _
      .ToList

答案 1 :(得分:0)

因为这有点像家庭作业,我不打算为你编写代码,但给你一些提示:

DateTime类提供了使用日期(例如AddDays)进行数学运算的方法,以便您可以迭代日期,例如使用for循环。您可以使用DayOfWeek属性获取星期几(星期一,星期二等)。这就是你真正需要的一切。所有复杂的日期逻辑都由DateTime类完成。

答案 2 :(得分:0)

这是一种枚举所有日期并计算相关日期的方法。它总是在最后一天之前增加一天并检查工作日。

Private Sub CheckDates(FromDate As Date, ToDate As Date, ByRef AllDaysCount As Integer, ByRef RelevantDayCount As Integer)
    RelevantDayCount = 0
    AllDaysCount = 0
    Dim dCheck As Date = FromDate
    Dim tsToAdd As TimeSpan = TimeSpan.FromDays(1)
    Do
        If Not (dCheck.DayOfWeek = DayOfWeek.Saturday OrElse dCheck.DayOfWeek = DayOfWeek.Sunday) Then relevantDayCount += 1
        AllDaysCount += 1
        dCheck += tsToAdd
        If dCheck > ToDate Then Exit Do
    Loop
End Sub