internal static DateTimeFormatInfo GetDateFormat(CultureInfo culture)
        {
            // Check for persian first
            if (culture.LCID == 1065)
            {
                return(PersianCalendarHelper.GetDateTimeFormatInfo());
            }

            if (culture.Calendar is GregorianCalendar)
            {
                return(culture.DateTimeFormat);
            }
            else
            {
                GregorianCalendar  foundCal = null;
                DateTimeFormatInfo dtfi     = null;

                foreach (System.Globalization.Calendar cal in culture.OptionalCalendars)
                {
                    if (cal is GregorianCalendar)
                    {
                        // Return the first Gregorian calendar with CalendarType == Localized
                        // Otherwise return the first Gregorian calendar
                        if (foundCal == null)
                        {
                            foundCal = cal as GregorianCalendar;
                        }

                        if (((GregorianCalendar)cal).CalendarType == GregorianCalendarTypes.Localized)
                        {
                            foundCal = cal as GregorianCalendar;
                            break;
                        }
                    }
                }


                if (foundCal == null)
                {
                    // if there are no GregorianCalendars in the OptionalCalendars list, use the invariant dtfi
                    dtfi          = ((CultureInfo)CultureInfo.InvariantCulture.Clone()).DateTimeFormat;
                    dtfi.Calendar = new GregorianCalendar();
                }
                else
                {
                    dtfi          = ((CultureInfo)culture.Clone()).DateTimeFormat;
                    dtfi.Calendar = foundCal;
                }

                return(dtfi);
            }
        }
        public static string ToLongDateString(DateTime?date, CultureInfo culture)
        {
            string             result = string.Empty;
            DateTimeFormatInfo format = GetDateFormat(culture);

            if (date.HasValue && format != null)
            {
                //result = date.Value.Date.ToString(format.LongDatePattern, format);
                result = PersianCalendarHelper.ToCurrentCultureString(date.Value.Date, format.LongDatePattern, format);
            }

            return(result);
        }
        public static string ToAbbreviatedMonthString(DateTime?date, CultureInfo culture)
        {
            string             result = string.Empty;
            DateTimeFormatInfo format = GetDateFormat(culture);

            if (date.HasValue && format != null)
            {
                //string[] monthNames = format.AbbreviatedMonthNames;
                //if (monthNames != null && monthNames.Length > 0)
                //{
                //    result = monthNames[(date.Value.Month - 1) % monthNames.Length];
                //}
                result = PersianCalendarHelper.ToCurrentCultureString(date.Value, "MMM", format);
            }

            return(result);
        }
Beispiel #4
0
 internal static DateTimeFormatInfo GetDateFormat(CultureInfo culture)
 {
     return(PersianCalendarHelper.GetDateTimeFormatInfo());
 }