Exemplo n.º 1
0
        /// <summary>
        /// Parses the specified format.
        /// </summary>
        /// <param name="s">The string.</param>
        /// <returns>Returns the value.</returns>
        public override object Parse(string s)
        {
            if ((s == null) || (s == string.Empty))
            {
                return(null);
            }
            s = NumberHelper.FixJapaneseChars(s);
            bool flag  = false;
            int  index = s.IndexOf("-");

            if ((index > 0) && !DefaultTokens.IsEquals(s[index - 1], DefaultTokens.ExponentialSymbol, true))
            {
                flag = true;
            }
            List <string> list = new List <string>(new string[] { "/", ":", "." });

            list.Remove(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
            bool flag2 = false;

            if (flag)
            {
                flag2 = true;
            }
            if (!flag2)
            {
                foreach (string str in list)
                {
                    if (s.Contains(str))
                    {
                        flag2 = true;
                        break;
                    }
                }
            }
            if (flag2)
            {
                DateTime time;
                if (DateTime.TryParseExact(s, GeneralMonthDay, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time))
                {
                    return(time);
                }
                if (DateTime.TryParseExact(s, generalYearMonth, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time))
                {
                    return(time);
                }
                if (DateTime.TryParseExact(s, GeneralYearMonthDay, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time))
                {
                    return(time);
                }
                if (DateTime.TryParseExact(s, AlternativeYearMonthDay, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time))
                {
                    return(time);
                }
                if (DateTime.TryParseExact(s, generalHourMinute, null, ((DateTimeStyles)DateTimeStyles.NoCurrentDateDefault) | ((DateTimeStyles)DateTimeStyles.AllowWhiteSpaces), out time))
                {
                    if (((time.Year == 1) && (time.Month == 1)) && (time.Day == 1))
                    {
                        return(new TimeSpan(0, time.Hour, time.Minute, time.Second, time.Millisecond));
                    }
                    return(time);
                }
                if (DateTime.TryParseExact(s, generalHourMinuteSecond, null, ((DateTimeStyles)DateTimeStyles.NoCurrentDateDefault) | ((DateTimeStyles)DateTimeStyles.AllowWhiteSpaces), out time))
                {
                    if (((time.Year == 1) && (time.Month == 1)) && (time.Day == 1))
                    {
                        return(new TimeSpan(0, time.Hour, time.Minute, time.Second, time.Millisecond));
                    }
                    return(time);
                }
                if (DateTime.TryParseExact(s, generalHourMinuteSecondSubSecond, null, ((DateTimeStyles)DateTimeStyles.NoCurrentDateDefault) | ((DateTimeStyles)DateTimeStyles.AllowWhiteSpaces), out time))
                {
                    if (((time.Year == 1) && (time.Month == 1)) && (time.Day == 1))
                    {
                        return(new TimeSpan(0, time.Hour, time.Minute, time.Second, time.Millisecond));
                    }
                    return(time);
                }
                if (DateTime.TryParseExact(s, GeneralHourMinuteWithDate, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time))
                {
                    return(time);
                }
                if (DateTime.TryParseExact(s, GeneralHourMinuteSecondWithDate, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time))
                {
                    return(time);
                }
                if (DateTime.TryParseExact(s, GeneralHourMinuteSecondSubSecondWithDate, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time))
                {
                    return(time);
                }
            }
            string str2     = s;
            bool?  nullable = null;

            if (str2.Substring(0, 1) == DefaultTokens.NegativeSign)
            {
                nullable = true;
            }
            else if (str2.Substring(0, 1) == DefaultTokens.PositiveSign)
            {
                nullable = false;
            }
            bool flag3 = false;

            if ((nullable.HasValue && (str2.Length > 3)) && ((str2[1] == DefaultTokens.LeftParenthesis) && (str2[str2.Length - 1] == DefaultTokens.RightParenthesis)))
            {
                flag3 = true;
            }
            if (nullable.HasValue && flag3)
            {
                string str3 = s.Remove(0, 1);
                object obj2 = this.DigitalFormat.Parse(str3);
                if (obj2 == null)
                {
                    return(s);
                }
                if (obj2 is double)
                {
                    if (nullable.Value)
                    {
                        return((double)-Math.Abs((double)((double)obj2)));
                    }
                    return((double)Math.Abs((double)((double)obj2)));
                }
                if (!(obj2 is int))
                {
                    return(obj2);
                }
                if (nullable.Value)
                {
                    return((int)-Math.Abs((int)((int)obj2)));
                }
                return((int)Math.Abs((int)((int)obj2)));
            }
            object obj3 = this.DigitalFormat.Parse(s);

            if (obj3 != null)
            {
                return(obj3);
            }
            return(s);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Gets the fraction.
 /// </summary>
 /// <param name="value">The value.</param>
 /// <param name="denominatorDigits">The denominator digits.</param>
 /// <param name="integer">The integer.</param>
 /// <param name="numerator">The numerator.</param>
 /// <param name="denominator">The denominator.</param>
 /// <returns>Returns the fraction.</returns>
 public static bool GetFraction(double value, int denominatorDigits, out double integer, out double numerator, out double denominator)
 {
     return(NumberHelper.GetFraction(value, denominatorDigits, out integer, out numerator, out denominator));
 }