Yılın kaçıncı haftasındayız?

Belki birgün lazım olur :)

Sizinle yılın kaçıncı haftasında olduğumuzu hesaplayan bir extension metod göstermek istiyorum:

public static class ExtensionMethods
{
/// 
/// Offsets to move the day of the year on a week, allowing
/// for the current year Jan 1st day of week, and the Sun/Mon 
/// week start difference between ISO 8601 and Microsoft
/// 
private static int[] moveByDays = { 6, 7, 8, 9, 10, 4, 5 };
/// 
/// Get the Week number of the year
/// (In the range 1..53)
/// This conforms to ISO 8601 specification for week number.
/// 
/// 
/// Week of year
public static int WeekOfYear(this DateTime date)
    {
    DateTime startOfYear = new DateTime(date.Year, 1, 1);
    DateTime endOfYear = new DateTime(date.Year, 12, 31);
    // ISO 8601 weeks start with Monday 
    // The first week of a year includes the first Thursday 
    // This means that Jan 1st could be in week 51, 52, or 53 of the previous year...
    int numberDays = date.Subtract(startOfYear).Days + moveByDays[(int) startOfYear.DayOfWeek];
    int weekNumber = numberDays / 7;
    switch (weekNumber)
        {
        case 0:
            // Before start of first week of this year - in last week of previous year
            weekNumber = WeekOfYear(startOfYear.AddDays(-1));
            break;
        case 53:
            // In first week of next year.
            if (endOfYear.DayOfWeek < DayOfWeek.Thursday)
                {
                weekNumber = 1;
                }
            break;
        }
    return weekNumber;
    }
}

Ne işime yarar demeyin, belki bir gün lazım olur:)

Kullanım şekli:

int hafta = DateTime.Today.WeekOfYear();

Başka bir alternatif yol:

CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(tarih, 
  CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

Herkese kolay gelsin..