Exemplo n.º 1
0
        public static bool TryParseDateTime(this string input,
                                            out DateTime dt,
                                            Culture inputculture          = null,
                                            DateTimeParseOrder parseOrder = DateTimeParseOrder.DMY)
        {
            if (inputculture == null)
            {
                inputculture = Globals.CurrentCulture;
            }
            int  year, month, day;
            char separator = '-';

            if (!input.Contains("-") && input.Contains("/"))
            {
                separator = '/';
            }
            bool result = GetDefaultCalendarDateFromString(input,
                                                           out year,
                                                           out month,
                                                           out day,
                                                           separator,
                                                           inputculture,
                                                           parseOrder);

            if (!result)
            {
                dt = default(DateTime);
                return(false);
            }
            dt = ConvertFromCalendar(year, month, day, inputculture.Calendar);
            return(true);
        }
Exemplo n.º 2
0
        public static DateTime ParseDateTime(this string input,
                                             Culture inputculture          = null,
                                             DateTimeParseOrder parseOrder = DateTimeParseOrder.DMY)
        {
            DateTime dt;

            if (!TryParseDateTime(input, out dt, inputculture, parseOrder))
            {
                throw new Exception("Localizer: Cannot parse datetime in this culture!");
            }
            return(dt);
        }
Exemplo n.º 3
0
        internal static bool GetDefaultCalendarDateFromString(this string input,
                                                              out int year,
                                                              out int month,
                                                              out int day,
                                                              char separator                = (char)0,
                                                              Culture inputculture          = null,
                                                              DateTimeParseOrder parseOrder = DateTimeParseOrder.DMY)
        {
            if (inputculture == null)
            {
                inputculture = Globals.CurrentCulture;
            }
            if (separator == (char)0)
            {
                separator = Globals.CurrentCulture.DateSeparator[0];
            }
            if (inputculture.Equals(SupportedCultures.FaIr))
            {
                PersianCalendar.DateFormatType df;
                switch (parseOrder)
                {
                case DateTimeParseOrder.YMD:
                    df = PersianCalendar.DateFormatType.YMD;
                    break;

                case DateTimeParseOrder.YDM:
                    df = PersianCalendar.DateFormatType.YDM;
                    break;

                case DateTimeParseOrder.DMY:
                    df = PersianCalendar.DateFormatType.DMY;
                    break;

                case DateTimeParseOrder.DYM:
                    df = PersianCalendar.DateFormatType.DYM;
                    break;

                case DateTimeParseOrder.MYD:
                    df = PersianCalendar.DateFormatType.MYD;
                    break;

                case DateTimeParseOrder.MDY:
                    df = PersianCalendar.DateFormatType.MDY;
                    break;

                default:
                    df = PersianCalendar.DateFormatType.UnknownFormat;
                    break;
                }
                if (input.Contains(":") && input.Contains(" "))
                {
                    var inputs = input.Split(' ');
                    if (inputs.Length == 2)
                    {
                        if (inputs[0].Contains(":") ^ inputs[1].Contains(":"))
                        {
                            if (inputs[0].Contains(":"))
                            {
                                input = inputs[1];
                            }
                            else
                            {
                                input = inputs[0];
                            }
                        }
                    }
                }
                var pdt = PersianCalendar.PersianDateTime.ParseDate(input, separator, ref df);
                year  = pdt.Year;
                month = pdt.Month;
                day   = pdt.Day;
                return(true);
            }
            if (inputculture.Equals(SupportedCultures.EnUs))
            {
                var dt = DateTime.Parse(input);
                year  = dt.Year;
                month = dt.Month;
                day   = dt.Day;
                return(true);
            }
            year = month = day = 0;
            return(false);
        }