如何使用vb.net根据周数获取一周的开始日期?

时间:2013-11-20 00:09:41

标签: vb.net

我需要帮助从vb.net中的给定周数获取一周的开始日期。

我的组合框与第1-53项作为周数绑定。我想要做的是每当我选择一个特定的周数时,它将返回所选周数的第一个日期。

例如,我选择了第46周,它必须在2013年11月11日作为第46周的第一个日期返回。

我尝试了以下代码,它只返回当前周数的一周中的第一个日期。

DateAdd("d", -Weekday(Now, FirstDayOfWeek.Monday) + 1, Now)

有没有办法可以恢复我的预期输出?

请帮帮我。提前谢谢。

2 个答案:

答案 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