2016-05-07 1 views
1

私は、グレゴリオ暦の日付をヒワリ日に変換するコードの次のスニペットを持っています。Xamarin.Androidのカレンダー間で日付を変換する

public static string GregoriantoHijri(DateTime gregorianDate) 
{ 
    CultureInfo arCI = new CultureInfo("ar-SA"); 
    var hijriCalendar = new HijriCalendar(); 
    hijriCalendar.HijriAdjustment = App_Code.StoreRetrieveSettingsAssist.getHA(); 
    arCI.DateTimeFormat.Calendar = hijriCalendar; //CODE FAILS HERE 
    string hijriDate = gregorianDate.ToString("dd-MM-yyyy", arCI); 

    return hijriDate; 
} 

このコードはまた、ストアに掲載された私のWindows Mobileのアプリケーションのために完璧に動作します。 は、しかし、同じコードがXamarin.Android

に私にエラーの問題を与えている:同じ.NETベースクラスを使用してコードが異なるプラットフォーム上の問題を持っている理由

System.ArgumentOutOfRangeException:
Not a valid calendar for the given culture.
Parameter name: value

が、私は理解していません。これがうまくいかないような回避策を提案できますか?

+0

私は、アンドロイドのカウントが.NETのカウントとは異なることを正しく覚えています。 1月は0ではありません。したがって、問題は次のとおりです。例外が発生したときに、gregorianDateパラメータに指定された日付は何ですか? –

+0

@tequilaslammer今日はグレゴリオ暦のどの日付でも使用しています。後で日付を変換する機能を追加する予定です –

答えて

1

NodaTimeとするとよいでしょう。おそらくネイティブ.NETのdatetime処理よりも堅牢で、Hijriをサポートするはずです。

関連する問題