使用FirstDayOfWeek和FirstWeekOfYear计算StartDate
本文关键字:计算 StartDate FirstWeekOfYear FirstDayOfWeek 使用 | 更新日期: 2023-09-27 18:14:45
My StartYear是2009,FirstDayOfWeek
是星期一,FirstWeekOfYear
是第一个完整的星期。
因此,根据2009年日历的上述标准,第一周实际上是从5日开始的。那么我如何使用上述条件(FirstDayOfWeek
和FirstWeekOfYear
(日历规则))获得一年的开始日期?它应该是通用的
重新更新代码
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中内置的文化特性。这会帮你节省很多时间。
(如果您仍然不想使用区域性,只需修改代码)