获得C#周的一周

时间:2014-04-14 12:29:10

标签: c# winforms datetime week-number

我想在c#desktop应用程序中找到一个带有周数的日期。

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

如何在一个月内获得一周,如下例所示?

示例:

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

2014年1月30日= 1月的第四个week

但2014年2月1日= 1月4日

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

4 个答案:

答案 0 :(得分:4)

以下是方法:

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;
}

测试:

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

该方法将返回一个具有该季度的第一个和最后一个日期的结构。

 private String test()
    {
        DateRangeStruct retVal;
        retVal.startDate = retVal.endDate = Now;
        retVal = DateRange(DateRangeOptions.Week, DateTime.Today);
    }

请参考这些链接 http://nonsequiturs.com/articles/find-the-first-and-last-day-of-a-date-range-using-c-and-asp-net/

答案 3 :(得分:0)

我认为这就是你想要的:

public static int GetWeekOfMonth(DateTime date)  
{  
    DateTime beginningOfMonth = new DateTime(date.Year, date.Month, 1);  

    while (date.Date.AddDays(1).DayOfWeek != CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek)  
        date = date.AddDays(1);  

    return (int)Math.Truncate((double)date.Subtract(beginningOfMonth).TotalDays  / 7f) + 1;  
} 

由David M Morton撰写http://social.msdn.microsoft.com/Forums/vstudio/en-US/bf504bba-85cb-492d-a8f7-4ccabdf882cb/get-week-number-for-month