在MonoTouch中计算周数-类似于.net中的bug



在.Net Framework中,尝试使用ISO-8601计算周数时存在已知错误。

简短描述:"根据ISO 8601标准确定日期的周数时,对Oleaut32.dll文件的底层函数调用错误地返回了特定年份最后一个星期一的第53周,而不是第1周。"(来源:Microsoft)

我的问题:这个bug是否也"包含"在MonoTouch中,我必须使用变通方法,还是在MonoTouch中修复了?MonoTouch-API-参考在这里并不是什么大帮助。。。

更新:正如评论中告诉我的那样,我自己做了一些测试。之后的示例代码

        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

但如果能有一些"官方声明",那还是很好的。。。

我可以确认最新的MonoTouch版本中存在错误。

除非微软修复他们自己的实现(我还没有在Windows上测试过),否则它不太可能被修复,因为Mono的兼容性包括许多错误(便于移植)。然而,调整您的代码以处理工作/有缺陷的代码库并不困难(因此任何未来的更改都不会影响您)。

注:这只是一个半官方声明。任何公司的官方声明仅来自官方渠道;-)

最新更新