我知道有很多这样的问题,但我在.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%的编码,但这阻止了我。在我解决之前,我无法继续处理我的程序。非常感谢你。
答案 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