Dim today As Date = Date.Today
Dim dayDiff As Integer = today.DayOfWeek - DayOfWeek.Monday
Dim monday As Date = today.AddDays(-dayDiff)
如果星期一是一周的第一天:
Dim today As Date = Date.Today
Dim dayIndex As Integer = today.DayOfWeek
If dayIndex < DayOfWeek.Monday Then
dayIndex += 7 'Monday is first day of week, no day of week should have a smaller index
End If
Dim dayDiff As Integer = dayIndex - DayOfWeek.Monday
Dim monday As Date = today.AddDays(-dayDiff)
Public Function GetSubsequentMonday(ByVal startDate As DateTime, ByVal subsequentWeeks As Integer) As DateTime
Dim dayOfWeek As Integer = CInt(startDate.DayOfWeek)
Dim daysUntilMonday As Integer = (Math.Sign(dayOfWeek) * (7 - dayOfWeek)) + 1
'number of days until the next Monday
Return startDate.AddDays(CDbl((daysUntilMonday + (7 * (subsequentWeeks - 1)))))
End Function
0
如果星期一是第一天,另一种方法是:
Dim today As Date = Date.Today
Dim dayDiff As Integer = today.DayOfWeek - DayOfWeek.Monday
Dim monday As Date = today.AddDays(-dayDiff)
dayDiff = DayOfWeek.Saturday - today.DayOfWeek + 1
Dim sunday As Date = today.AddDays(dayDiff)
Public Function GetFirstOfLastWeek() As DateTime
Dim today As DateTime, daysSinceMonday As Integer
today = DateTime.Today
daysSinceMonday = today.DayOfWeek - DayOfWeek.Monday
If daysSinceMonday < 0 Then
daysSinceMonday += 7
End If
Return today.AddDays(-daysSinceMonday)
End Function
9 回答
如果星期日是一周的第一天,你可以简单地这样做:
如果星期一是一周的第一天:
我刚刚在一个正在研究的项目中做到这一点 - 我保证,这是正确的 . 这是一个在给定日期之后返回第n个星期一的方法 . 如果给定日期是星期一,则返回下一个星期一 .
如果星期一是第一天,另一种方法是:
一个简单的方法应该得到你想要的:
您也可以将它扩展到您想要的任何一天:
要调用第一个示例,只需使用以下内容:
DateTime.DayOfWeek是一个枚举,指示给定日期的哪一天 . 由于星期一是1,您可以使用以下代码找到当周的星期一:
如果您的周从星期一开始,那么您可以使用以下内容:
您可以使用星期几方法
见:http://msdn.microsoft.com/en-us/library/system.datetime.dayofweek.aspx
继我对Meta-Knight的回答之后,这是一个简短的函数,我在评论中提到了更正: