什么是计算一年中第一周的星期一的最简单方法

leo*_*ora 9 c# datetime

我希望在一年内通过,并获得代表第一周的第一个星期一的约会

所以:

  • 如果在2011年通过,我会在2011年1月3日回来
  • 如果在2010年通过,我会在2010年1月4日回来

Jac*_*ope 11

试试这个没有循环的解决方案:

public DateTime FirstMonday(int year)
{
    DateTime firstDay = new DateTime(year, 1, 1);

    return new DateTime(year, 1, (8 - (int)firstDay.DayOfWeek) % 7 + 1);
}
Run Code Online (Sandbox Code Playgroud)

  • int & DayOfWeek 不兼容,。你需要一个演员。除此之外,+1 表示放弃循环。 (2认同)

Ste*_*ner 9

private DateTime GetFirstMondayOfYear(int year)
{
    DateTime dt = new DateTime(year, 1, 1);

    while (dt.DayOfWeek != DayOfWeek.Monday)
    {
        dt = dt.AddDays(1);
    }

    return dt;
}
Run Code Online (Sandbox Code Playgroud)

  • 这将是今年的第一个星期一,这可能是OP想要的.但是,请注意,ISO具有"第一周"的定义,通过该定义,N年中第一周的星期一可能实际上落在N-1年. (5认同)