为什么这个日期不在下一年的那个星期?(C#日历)

本文关键字:日历 一年 日期 为什么 | 更新日期: 2023-09-27 18:21:55

我想计算给定日期的周数。

DateTime date = Convert.ToDateTime("31.12.2001");
DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
System.Globalization.Calendar cal = dfi.Calendar;
int weekOfYear = cal.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek,  
   dfi.FirstDayOfWeek);

在我的DateTimeFormatInfo中,一周的第一天是星期一。我想使用四天规则,这意味着一周属于一年中的大部分时间。2001年12月31日是星期一,应该是2002年的第一周。然而,weekOfYear返回为53。

有人知道怎么了吗?

为什么这个日期不在下一年的那个星期?(C#日历)

有关确切规则,请参阅CalendarWeekRule的文档。简而言之,12月31日永远不会是第一周,它将永远是52/53。枚举上的值会影响1月的前几天的周数。