在 .Net-Framework 中尝试使用 ISO-8601 计算周数时存在一个已知错误。
简短描述: “根据 ISO 8601 标准确定日期的周数时,对 Oleaut32.dll 文件的基础函数调用错误地返回第 53 周而不是某些年份最后一个星期一的第 1 周。” (来源:微软)
我的问题:这个错误是否也“包含”在 MonoTouch 中,我必须使用解决方法,还是在 MonoTouch 中修复?MonoTouch-API-Reference在这里没有太大帮助......
更新:正如我在评论中所说的那样,我自己做了一些测试。示例代码如下
DateTime first = new DateTime(1851,12,29);
DateTime second = new DateTime(2011,12,30);
DateTime third = new DateTime(1895,12,30);
System.Globalization.Calendar objCal = System.Globalization.CultureInfo.CurrentCulture.Calendar;
int weekNumberFirst = objCal.GetWeekOfYear (first, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
int weekNumberSecond = objCal.GetWeekOfYear (second, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
int weekNumberThird = objCal.GetWeekOfYear (third, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
Console.WriteLine (weekNumberFirst +" "+weekNumberSecond+" "+weekNumberThird);
假定输出:1 52 1
实际输出:53 52 53
但是仍然会很好,为此有一些“官方声明”......