Tôi đang tính số tuần cho các ngày, nhưng System.Globalization.Calendar
trả về kết quả lẻ cho (trong số các năm khác) 31 tháng 12 năm 2007 và 2012.System.Globalization.Calendar.GetWeekOfYear() trả về kết quả lẻ
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);
}
Kết quả
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
theo như tôi hiểu, không nên có một tuần 53 trong năm 2007 và 2012, nhưng những ngày nên được bao gồm trong tuần 1. có cách nào để thay đổi hành vi này trong Calendar
?
"Những ngày được cho là được đưa vào tuần 1": theo quy tắc nào? Theo các quy tắc tôi biết, những ngày cuối cùng của năm không bao giờ là một phần của tuần đầu tiên của năm tiếp theo ... –
Theo ISO 8601. http://en.wikipedia.org/wiki/ISO_8601 – sshow
BTW, tại sao bạn có đang sử dụng định dạng ngày kỳ lạ đó không? Tôi nghĩ rằng tôi chưa bao giờ thấy những ngày được viết là '2007.12.29'. – svick