如何在 C# 中获取下一个特定日期的日期

Aze*_*112 6 c# datetime date

如何在 C# 中获取下周一或下周五的日期。假设今天是星期三,我想知道星期五的日期。这就是我所做的

DateTime time = DateTime.Now.Date;
DateTime NextFriday;
if (time.DayOfWeek == DayOfWeek.Wednesday)
{
    NextFriday = DateTime.Now.AddDays(2);
}
Run Code Online (Sandbox Code Playgroud)

通过这种方法,我必须为每天启动 7 个变量,并为每天启动 7 个条件,以找到下一个特定日期。

有没有更好、更干净的代码,我可以通过它来获取下一天的日期。

Nko*_*osi 6

使用以下内容

public int CalculateOffset(DayOfWeek current, DayOfWeek desired) {
    // f( c, d ) = [7 - (c - d)] mod 7
    // f( c, d ) = [7 - c + d] mod 7
    // c is current day of week and 0 <= c < 7
    // d is desired day of the week and 0 <= d < 7
    int c = (int)current;
    int d = (int)desired;
    int offset = (7 - c + d) % 7;
    return offset == 0 ? 7 : offset;
}
Run Code Online (Sandbox Code Playgroud)

您可以计算距离所需日期还有多远,然后将其添加到当前日期

DateTime now = DateTime.Now.Date;
int offset = CalculateOffset(now.DayOfWeek, DayOfWeek.Friday);
DateTime nextFriday = now.AddDays(offset);
Run Code Online (Sandbox Code Playgroud)