使用FirstDayOfWeek和FirstWeekOfYear计算StartDate

时间:2011-11-15 12:41:30

标签: c# datetime

我的StartYear是2009年,FirstDayOfWeek是星期一,FirstWeekOfYear是第一整周。

因此,根据2009年日历的上述标准,第1周实际上从第5周开始。 那么我如何使用上述条件获得StartDate年份(FirstDayOfWeekFirstWeekOfYear(日历规则))?它应该是通用的。

1 个答案:

答案 0 :(得分:0)

再次更新了代码。

public DateTime GetFirstDayOfFirstWeek(int year, CultureInfo culture)
{
    // calc first date of this week
    var firstDateOfWeek = new DateTime(year, 1, 10);
    while (firstDateOfWeek.DayOfWeek != culture.DateTimeFormat.FirstDayOfWeek)
        firstDateOfWeek = firstDateOfWeek.AddDays(-1);

    // get current week number
    int weekNum = culture.Calendar.GetWeekOfYear(firstDateOfWeek, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek);

    // remove all weeks except the first one
    return firstDateOfWeek.AddDays(7 - (weekNum * 7));
}

var date = GetFirstDayOfFirstWeek(2009, new CultureInfo("sv-se"));

注意代码:我仍然使用CultureInfo而不是将规则作为参数。通过这样做,我帮你一个忙:)你应该学习使用.NET中内置的文化功能。它可以帮助您节省大量时间。

(如果您仍然不想使用该文化,只需修改代码)