使用VB.NET查找一周中星期一的日期

Wil*_*lis 18 vb.net datetime

我需要找到一种方法来查找我们正在进行的任何一周的星期一的日期(DD/MM/YYYY).

例如,本周,星期一将是2009年11月9日,如果这是下周,那将是2009年11月16日.

我设法以代码的形式获得了某个地方,但我得到的只是"无法转换为整数"错误.我正在使用Date.Today和AddDays().

谢谢你的帮助.:)

Met*_*ght 39

如果星期日是一周的第一天,你可以简单地这样做:

Dim today As Date = Date.Today
Dim dayDiff As Integer = today.DayOfWeek - DayOfWeek.Monday
Dim monday As Date = today.AddDays(-dayDiff)
Run Code Online (Sandbox Code Playgroud)

如果星期一是一周的第一天:

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)
Run Code Online (Sandbox Code Playgroud)

  • 理由是它在周日不起作用:DayOfWeek.Sunday的值为0,DayOfWeek.Monday为1.因此dayDiff为-1,( - dayDiff)为+1.所以变量星期一的值将是今天(星期日)加1天.因此,您可能需要按照If today.DayOfWeek = DayOfWeek.Sunday的行添加测试然后monday = monday.AddDays(-7) (2认同)

Jas*_*kan 6

DateTime.DayOfWeek是一个枚举,指示给定日期的哪一天.由于星期一是1,您可以使用以下代码找到当周的星期一:

Dim monday As DateTime = Today.AddDays((Today.DayOfWeek - DayOfWeek.Monday) * -1)
Run Code Online (Sandbox Code Playgroud)