在MonoTouch中计算周数 - 在.net中的错误?

时间:2012-02-23 14:54:22

标签: .net calendar xamarin.ios week-number

在尝试使用ISO-8601计算周数时,在.Net-Framework中有一个已知的bug

简短描述:“根据ISO 8601标准确定日期的周数时,对Oleaut32.dll文件的基础函数调用错误地返回第53周而不是第1周某些年份的上周一。“ (来源:Microsoft

我的问题:这个错误是否也包含在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

但是仍然会很好,对此有一些“官方声明”......

1 个答案:

答案 0 :(得分:3)

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

除非Microsoft修复自己的实现(我没有在Windows上测试过),否则不太可能修复,因为Mono兼容性包括一些错误(易于移植)。但是,调整代码以处理工作/错误代码库(因此任何未来的更改都不会影响您)并不是很难。

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