0

.Net-Frameworkには、ISO-8601で週番号を計算しようとしたときに既知のバグがあります。

簡単な説明:「ISO8601標準に従って日付の週番号を決定する場合、Oleaut32.dllファイルへの基になる関数呼び出しは、特定の年の最後の月曜日の第1週ではなく第53週を誤って返します。」(出典: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

しかし、これについての「公式声明」があれば、それでもいいでしょう...

4

1 に答える 1

3

最新のMonoTouchバージョンにバグが存在することを確認できます。

モノラルの互換性には(簡単な移植のための)多くのバグが含まれているため、Microsoftが独自の実装を修正しない限り(私はWindowsでテストしていません)、修正される可能性は低いです。ただし、動作中のコードベースとバグのあるコードベースの両方を処理するようにコードを調整することはそれほど難しくありません(したがって、将来の変更は影響しません)。

注:これは半公式の声明にすぎません。どの会社からの公式声明も公式チャンネルからのみ出されます;-)

于 2012-02-23T17:36:43.427 に答える