Beispiel #1
0
        public void EvaluateFormat(object current, Core.Parsing.Format format, ref bool handled, IOutput output, FormatDetails formatDetails)
        {
            if (format != null && format.HasNested)
            {
                return;
            }
            var      formatText = format != null ? format.Text : "";
            TimeSpan fromTime;

            if (current is TimeSpan)
            {
                fromTime = (TimeSpan)current;
            }
            else if (current is DateTime && formatText.StartsWith("timestring"))
            {
                formatText = formatText.Substring(10);
                fromTime   = DateTime.Now.Subtract((DateTime)current);
            }
            else
            {
                return;
            }
            var timeTextInfo = GetTimeTextInfo(formatDetails.Provider);

            if (timeTextInfo == null)
            {
                return;
            }
            var formattingOptions = TimeSpanFormatOptionsConverter.Parse(formatText);
            var timeString        = TimeSpanUtility.ToTimeString(fromTime, formattingOptions, timeTextInfo);

            output.Write(timeString, formatDetails);
            handled = true;
        }
Beispiel #2
0
        public bool TryEvaluateFormat(IFormattingInfo formattingInfo)
        {
            var format  = formattingInfo.Format;
            var current = formattingInfo.CurrentValue;

            if (format != null && format.HasNested)
            {
                return(false);
            }
            string options;

            if (formattingInfo.FormatterOptions != "")
            {
                options = formattingInfo.FormatterOptions;
            }
            else if (format != null)
            {
                options = format.GetLiteralText();
            }
            else
            {
                options = "";
            }

            TimeSpan fromTime;

            if (current is TimeSpan)
            {
                fromTime = (TimeSpan)current;
            }
            else if (current is DateTime && formattingInfo.FormatterOptions != "")
            {
                fromTime = DateTime.Now.Subtract((DateTime)current);
            }
            else if (current is DateTime && options.StartsWith("timestring"))
            {
                options  = options.Substring(10);
                fromTime = DateTime.Now.Subtract((DateTime)current);
            }
            else
            {
                return(false);
            }

            var timeTextInfo = GetTimeTextInfo(formattingInfo.FormatDetails.Provider);

            if (timeTextInfo == null)
            {
                return(false);
            }
            var formattingOptions = TimeSpanFormatOptionsConverter.Parse(options);
            var timeString        = fromTime.ToTimeString(formattingOptions, timeTextInfo);

            formattingInfo.Write(timeString);
            return(true);
        }
Beispiel #3
0
        public bool TryEvaluateFormat(IFormattingInfo formattingInfo)
        {
            var format  = formattingInfo.Format;
            var current = formattingInfo.CurrentValue;

            if (format != null && format.HasNested)
            {
                return(false);
            }
            string options;

            if (formattingInfo.FormatterOptions != "")
            {
                options = formattingInfo.FormatterOptions;
            }
            else if (format != null)
            {
                options = format.GetLiteralText();
            }
            else
            {
                options = "";
            }

            TimeSpan fromTime;

            switch (current)
            {
            case TimeSpan timeSpan:
                fromTime = timeSpan;
                break;

            case DateTime dateTime:
                if (formattingInfo.FormatterOptions != "")
                {
                    fromTime = SystemTime.Now().ToUniversalTime().Subtract(dateTime.ToUniversalTime());
                }
                else
                {
                    return(false);
                }
                break;

            case DateTimeOffset dateTimeOffset:
                if (formattingInfo.FormatterOptions != "")
                {
                    fromTime = SystemTime.OffsetNow().UtcDateTime.Subtract(dateTimeOffset.UtcDateTime);
                }
                else
                {
                    return(false);
                }
                break;

            default:
                return(false);
            }

            var timeTextInfo = GetTimeTextInfo(formattingInfo.FormatDetails.Provider);

            if (timeTextInfo == null)
            {
                return(false);
            }
            var formattingOptions = TimeSpanFormatOptionsConverter.Parse(options);
            var timeString        = fromTime.ToTimeString(formattingOptions, timeTextInfo);

            formattingInfo.Write(timeString);
            return(true);
        }