获取每月的C#周

Enk*_*hay 3 c# datetime week-number winforms

我想使用c#桌面应用程序查找日期在星期几上。

我一直在寻找谷歌,但没有一个适合我的需求。

如何获得一个月中的一周,如下例所示?

例:

我想要2014年1月6日= 1月的第一周

2014年1月30日= week1月4 日

但2014年2月1日= 1月的第4周

2014年2月3日是2月的第一周

Ulu*_*rov 8

方法如下:

static int GetWeekNumberOfMonth(DateTime date)
{
    date = date.Date;
    DateTime firstMonthDay = new DateTime(date.Year, date.Month, 1);
    DateTime firstMonthMonday = firstMonthDay.AddDays((DayOfWeek.Monday + 7 - firstMonthDay.DayOfWeek) % 7);
    if (firstMonthMonday > date)
    {
        firstMonthDay = firstMonthDay.AddMonths(-1);
        firstMonthMonday = firstMonthDay.AddDays((DayOfWeek.Monday + 7 - firstMonthDay.DayOfWeek) % 7);
    }
    return (date - firstMonthMonday).Days / 7 + 1;
}
Run Code Online (Sandbox Code Playgroud)

测试:

Console.WriteLine(GetWeekNumberOfMonth(new DateTime(2014, 1, 6)));  // 1
Console.WriteLine(GetWeekNumberOfMonth(new DateTime(2014, 1, 30))); // 4
Console.WriteLine(GetWeekNumberOfMonth(new DateTime(2014, 2, 1)));  // 4
Console.WriteLine(GetWeekNumberOfMonth(new DateTime(2014, 2, 3)));  // 1
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于 2021 年 3 月 21 日 (2认同)

Saj*_*ran 5

  public static int GetWeekNumber(DateTime dt)
  {
          CultureInfo curr= CultureInfo.CurrentCulture;
          int week = curr.Calendar.GetWeekOfYear(dt, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
          return week;
  }
Run Code Online (Sandbox Code Playgroud)

  • 他想要的是月份的周数,而不是年份的周数。 (3认同)