2016-10-04 8 views
3

私はar-saカルチャのdatetime文字列とは何でしょうか?

DateToString(DateTime datetime, string format, CultureInfo cultrueInfo) 
{ 
    return datetime.ToString(format, cultureInfo); 
} 

パラメータの方法があります:

datetime: {10/1/2016 12:00:00 AM} 
format: "ddd, dd MMM" 
cultureInfo: {ar-SA} 

しかし、それは私に "السبت、30ذوالحجة" を返します。 10月1日は土曜日です。なぜそれは9月30日土曜日私を返すように見える?私の側で何か間違っている?

+0

これは、ar-SA培養で使用されるカレンダーに起因すると考えられます。 UmAlQuraCalendarクラスの場合、各月は29日または30日です。 https://msdn.microsoft.com/en-us/library/system.globalization.umalquracalendar(v=vs.110).aspx – vchyzhevskyi

+0

http://islamicfinder.org/islamic-date-converter/?day=11&month= 8&year = 2012&dateType =グレゴリオ暦 – spspli

+0

私はこれを見つけました。それは30に変換されたようです。 – spspli

答えて

4

ar-SA培養物は、UmAlQuraCalendarカレンダーを使用する。

new CultureInfo("ar-SA").Calendar.Dump(); // System.Globalization.UmAlQuraCalendar 

あなたToString方法でその文化を使用しているので、それはそのカレンダーに基づいて文字列表現を生成します。 GregorianCalendarを使用していないため、は "9月"を生成する予定です。 UmAlQuraCalendar

enter image description here

、あなたのDateTiemは30-12-1437として表現されます。それは省略日名であるため、

  • ddd書式指定子がالسبت(土曜日別名(Yawm) as-Sabt)を生成します。なぜだ

    var dt = new DateTime(2016, 10, 1); // Gregorian 
    
    var umAlQura = new UmAlQuraCalendar(); 
    
    umAlQura.GetYear(dt);  // 1437 
    umAlQura.GetMonth(dt);  // 12 
    umAlQura.GetDayOfMonth(dt); // 30 
    

    https://www.staff.science.uu.nl/~gent0113/islam/ummalqura_converter.htm

  • ddフォーマット指定子は、期待通りに30を生成します。
  • MMMフォーマット指定子は、短縮月名であるため、ذوالحجة(Dhu al-Hijjah)を生成します。

ご覧のとおり、短縮された日と月の名前が切り替えられました。これはおそらくRight to leftの問題です。

関連する問題