使用FirstDayOfWeek和FirstWeekOfYear计算StartDate

本文关键字:计算 StartDate FirstWeekOfYear FirstDayOfWeek 使用 | 更新日期: 2023-09-27 18:14:45

My StartYear是2009,FirstDayOfWeek是星期一,FirstWeekOfYear是第一个完整的星期。

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

使用FirstDayOfWeek和FirstWeekOfYear计算StartDate

重新更新代码

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中内置的文化特性。这会帮你节省很多时间。

(如果您仍然不想使用区域性,只需修改代码)