我有一个相当奇怪的问题。我住在丹麦,2013 年的第一周(第 1 周)从 2012 年 12 月 31 日开始,持续 7 天 - 就像通常的几周一样 :)
但是根据 .NET,12 月 30 日是第 52 周,31 日是第 53 周,1 月 1 日是第 1 周。
第 53 周仅持续 1 天,第 1 周持续 6 天。显然,这一定是错误的(一周少于 7 天),而且在丹麦语境中肯定是错误的。12 月 31 日是第 1 周,而不是第 53 周。
以下代码说明了问题(CurrentCulture 为“da-DK”)
static void Main(string[] args)
{
//Here I get Monday
DayOfWeek firstDayOfWeek = DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek;
//Here I get FirstFourDayWeek
CalendarWeekRule weekRule = DateTimeFormatInfo.CurrentInfo.CalendarWeekRule;
DateTime date = new DateTime(2012,12,30);
for (int i = 0; i <= 10; i++)
{
DateTime currentDate = date.AddDays(i);
Console.WriteLine("Date: {0} WeekNumber: {1}",
currentDate.ToShortDateString(),
CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(currentDate, weekRule, firstDayOfWeek));
}
Console.ReadLine();
}
我做错了什么还是 .NET 中的错误?如果是后者——你有正确计算周数的建议吗?