我正在計算日期的計算週數,但System.Globalization.Calendar
返回2007年和2012年12月31日(其他年份)的奇數結果。System.Globalization.Calendar.GetWeekOfYear()返回奇數結果
Calendar calendar = CultureInfo.InvariantCulture.Calendar;
var date = new DateTime(2007, 12, 29);
for (int i = 0; i < 5; i++)
{
int w = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
Console.WriteLine("{0}\t{1}", date.ToString("dd.MM.yyyy"), w);
date = date.AddDays(1);
}
結果
29.12.2007 52
30.12.2007 52
31.12.2007 53 <--
01.01.2008 1
02.01.2008 1
29.12.2012 52
30.12.2012 52
31.12.2012 53 <--
01.01.2013 1
02.01.2013 1
據我瞭解,不應該有一個第53周2007年度和2012年,但日內應包括在1周有什麼辦法在0123中更改此行爲?
「這些日子應該包括在第一週」:根據哪個規則?根據我所知道的規則,今年的最後幾天永遠不會是明年第一週的一部分...... – 2012-01-10 18:59:05
根據ISO 8601。http://en.wikipedia.org/wiki/ISO_8601 – sshow 2012-01-10 19:11:02
順便說一句,爲什麼你使用奇怪的日期格式?我想我從來沒有見過寫作'2007.12.29'的日期。 – svick 2012-01-10 19:13:20