Расчет WeekNumber в MonoTouch - ошибка, как в .net? - PullRequest
0 голосов
/ 23 февраля 2012

В .Net-Framework есть известная ошибка при попытке вычислить номер недели с ISO-8601.

Краткое описание:"При определенииномер недели даты в соответствии со стандартом 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 Ответ

3 голосов
/ 23 февраля 2012

Я могу подтвердить, что ошибка существует в последних версиях MonoTouch.

Это вряд ли будет исправлено, если Microsoft не исправит свою собственную реализацию (я не проверял это на Windows), поскольку совместимость с Mono включает в себя множество ошибок (для облегчения портирования) Однако не составит труда настроить ваш код так, чтобы он работал как с работающей, так и с ошибочной кодовой базой (поэтому любое будущее изменение не повлияет на вас).

Примечание. Это только полуофициальное заявление. Официальные заявления от любой компании будут поступать только с официальных каналов; -)

...