私はかなり奇妙な問題を抱えています。私はデンマークに住んでおり、2013 年の最初の週 (第 1 週) は 2012 年 12 月 31 日から始まり、7 日間続きます。
.NET によると、12 月 30 日は第 52 週、31 日は第 53 週、1 月 1 日は第 1 週です。
第 53 週は 1 日だけ続き、第 1 週は 6 日間続きます。明らかにこれは間違いであり (1 週間が 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 のバグですか? 後者の場合、週番号を正しく計算するための提案はありますか?