2012-01-31 52 views
4

我想計算給定日期的星期數。爲什麼這個日期不是在明年的一週? (C#日曆)

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年的第1周。但是,weekOfYear返回爲53.

有人知道什麼是錯?

+0

相關問題:http://stackoverflow.com/q/662379/ – 2012-01-31 13:55:45

+0

我看,這個問題並不新鮮。 – AGuyCalledGerald 2012-01-31 13:56:54

+0

不是直接複製,但答案中有一些很好的信息。 – 2012-01-31 14:13:47

回答

4

查看the documentation for CalendarWeekRule準確的規則。總之,12月31日永遠不會是第1周,它總是像52/53。枚舉值會影響1月初的第一天。

+0

另請參閱[System.Globalization.Calendar.GetWeekOfYear()返回奇數結果](http://stackoverflow.com/q/8808878/41071)。 – svick 2012-01-31 14:14:57

+0

這沒有任何意義。一個星期應該有7天。 MS在做什麼奇怪的事情? – AGuyCalledGerald 2012-01-31 14:17:47

相關問題