我需要帮助从vb.net中的给定周数获取一周的开始日期。
我的组合框与第1-53项作为周数绑定。我想要做的是每当我选择一个特定的周数时,它将返回所选周数的第一个日期。
例如,我选择了第46周,它必须在2013年11月11日作为第46周的第一个日期返回。
我尝试了以下代码,它只返回当前周数的一周中的第一个日期。
DateAdd("d", -Weekday(Now, FirstDayOfWeek.Monday) + 1, Now)
有没有办法可以恢复我的预期输出?
请帮帮我。提前谢谢。
答案 0 :(得分:1)
您可以尝试这样的事情:
Private Sub TestDateAdd()
Dim weekStart As DateTime = GetWeekStartDate(46, 2013)
Console.WriteLine(weekStart)
End Sub
Private Function GetWeekStartDate(weekNumber As Integer, year As Integer) As Date
Dim startDate As New DateTime(year, 1, 1)
Dim weekDate As DateTime = DateAdd(DateInterval.WeekOfYear, weekNumber - 1, startDate)
Return DateAdd(DateInterval.Day, (-weekDate.DayOfWeek) + 1, weekDate)
End Function
免责声明:我只是用一个输入对此进行了测试,您可能希望确保它在不同年份的预期工作等等。
答案 1 :(得分:0)
Public Function FirstDateOfWeek(ByVal Year As Integer, ByVal Week As Integer, Optional FirstDayOfWeek As DayOfWeek = DayOfWeek.Monday) As Date
Dim dt As Date = New Date(Year, 1, 1)
If dt.DayOfWeek > 4 Then dt = dt.AddDays(7 - dt.DayOfWeek) Else dt = dt.AddDays(-dt.DayOfWeek)
dt = dt.AddDays(FirstDayOfWeek)
Return dt.AddDays(7 * (Week - 1))
End Function