Fazer uma PerguntaFazer uma Pergunta
 

RespondidoPersianCalendar as CurrentCulture

  • sexta-feira, 2 de dezembro de 2005 22:35Mohammad Mir mostafa Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Hi,
    My main language is persian, and use persian calendar as my main calendar, but when i wanna use:

    ... .CurrentCulture.DateTimeFormat.Calendar = new System.Globalization.PersianCalendar();
    it gives me an error.
    can anybody help me, or give me a short source code, too correct it?

Respostas

  • terça-feira, 5 de setembro de 2006 17:53Emad Rangchi Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    Dear Mohammad

    I should notice you about whatever wrote in MSDN

    Use a PersianCalendar object to calculate dates in the Persian calendar, or to convert Persian dates to and from Gregorian dates.

    Do not use a PersianCalendar object as the default calendar for a culture. The default calendar is specified by the CultureInfo.Calendar property, and must be one of the calendars returned by the CultureInfo.OptionalCalendars property. Currently, the PersianCalendar class is not an optional calendar for any culture supported by the CultureInfo class and consequently cannot be a default calendar.

Todas as Respostas

  • domingo, 5 de março de 2006 11:26Mohammad Mir mostafa Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    No body knows how to do that?
  • terça-feira, 5 de setembro de 2006 17:53Emad Rangchi Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    Dear Mohammad

    I should notice you about whatever wrote in MSDN

    Use a PersianCalendar object to calculate dates in the Persian calendar, or to convert Persian dates to and from Gregorian dates.

    Do not use a PersianCalendar object as the default calendar for a culture. The default calendar is specified by the CultureInfo.Calendar property, and must be one of the calendars returned by the CultureInfo.OptionalCalendars property. Currently, the PersianCalendar class is not an optional calendar for any culture supported by the CultureInfo class and consequently cannot be a default calendar.

  • sábado, 16 de setembro de 2006 5:26Mohammad Mir mostafa Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Thanks dear Emad.
  • quinta-feira, 9 de agosto de 2007 5:53Masoud_TB Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Resposta Proposta
    Dear Mr.Emad,
    here is the code that you can use to set PersianCalendar as default calendar for thread:

    System.Globalization.CultureInfo calture = new System.Globalization.CultureInfo("fa-IR");
            System.Globalization.DateTimeFormatInfo info = calture.DateTimeFormat;
            info.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
            info.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };
            info.AbbreviatedMonthNames = new string[] { "فروردین", "ارديبهشت", "خرداد", "تير", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
            info.MonthNames = new string[] { "فروردین", "ارديبهشت", "خرداد", "تير", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
            info.AMDesignator = "ق.ظ";
            info.PMDesignator = "ب.ظ";
            info.ShortDatePattern = "yyyy/MM/dd";
            info.FirstDayOfWeek = DayOfWeek.Saturday;
            System.Globalization.PersianCalendar cal = new System.Globalization.PersianCalendar();

            typeof(System.Globalization.DateTimeFormatInfo).GetField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(info, cal);
            object obj = typeof(System.Globalization.DateTimeFormatInfo).GetField("m_cultureTableRecord", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(info);
            obj.GetType().GetMethod("UseCurrentCalendar", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).Invoke(obj, new object[] { cal.GetType().GetProperty("ID", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(cal, null) });
            typeof(System.Globalization.CultureInfo).GetField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(calture, cal);
            typeof(System.Globalization.CultureInfo).GetField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(calture, cal);

            System.Threading.Thread.CurrentThread.CurrentCulture = calture;
            System.Threading.Thread.CurrentThread.CurrentUICulture = calture;
            System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat = info;
            System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat = info;

    then you can use DateTime class in Persian and also Calendar of ASP .NET will show you the Shami dates.
    • Sugerido como Respostamoradidn sexta-feira, 30 de maio de 2008 14:50
    •  
  • terça-feira, 29 de setembro de 2009 7:00M. Abbasi Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    thank you very much

    but what about windows forms? i tested the code in there but not succeeded

    can you suggest such resolution for using in windows forms?

    maysam.abbasi@gmail.com
  • terça-feira, 13 de outubro de 2009 10:36Mohammad Mir mostafa Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Check this out.
    Mohammad - C# Lover
  • domingo, 8 de novembro de 2009 7:46M. Abbasi Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    thank you my friend for your reply.

    wish to have good days for you