获取上周一的日期

use*_*776 2 .net vb.net date days date-difference

我正在尝试获取本周星期一的日期。这接近正确吗?

Dim MondayOfCurrentWeek As Date = Date.Today - Date.Today.DayOfWeek + 1
Run Code Online (Sandbox Code Playgroud)

据我了解,AyOfWeek 索引是:

1 = Monday
2 = Tuesday
3 = Wednesday
4 = Thursday
5 = Friday
6 = Saturday
0 = Sunday
Run Code Online (Sandbox Code Playgroud)

因此,如果例如今天的日期是星期四,我会得到:

Dim MondayOfCurrentWeek As Date = Date - 4 + 1 
Run Code Online (Sandbox Code Playgroud)

这将等于

Date - 3
Run Code Online (Sandbox Code Playgroud)

对我来说似乎是正确的。

还是我完全没了?

Jam*_*rpe 6

一种非常简单的替代方法,虽然性能可能不高,但确实避免了任何基于算术的错误:

Dim monday As Date = Date.Today
While (monday.DayOfWeek <> DayOfWeek.Monday)
    monday = monday.AddDays(-1)
End While
Run Code Online (Sandbox Code Playgroud)

这可以很容易地扩展为处理一周中任何一天的功能。除非这是一段非常大量的代码,否则性能会很好。