【问题标题】:Calculating WeekNumber in MonoTouch - bug like in .net?在 MonoTouch 中计算 WeekNumber - 像 .net 中的错误?
【发布时间】:2012-02-23 14:54:22
【问题描述】:

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

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

我的问题:此错误是否也“包含”在 MonoTouch 中,我必须使用解决方法,还是在 MonoTouch 中修复? MonoTouch-API-Reference 在这里帮助不大...

更新:正如我在 cmets 中所说的,我自己做了一些测试。示例代码如下

        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

但还是很高兴,对此有一些“官方声明”......

【问题讨论】:

  • 为什么不模拟一些测试呢?这似乎是非常有结论的。
  • 如果有某种官方来源(Xamarin-Doc.等)会很好。不必自己“破解”。
  • 如果这是您所依赖的东西,那么无论哪种方式,您都需要进行测试。已经这样做了。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多