Esempio n. 1
0
        public static string Format(
            this TimeSpan span,
            DateTimeInterval includeIntervals,
            byte maxDepth,
            IStringLocalizer localizer = null)
        {
            string result         = String.Empty;
            var    ticksRemainder = span.Ticks;

            byte depth = 0;

            foreach (Enum flag in includeIntervals.GetFlags(SortOrder.Descending))
            {
                var interval = (DateTimeInterval)flag;
                if (depth < maxDepth)
                {
                    var wholeIntervals = ticksRemainder.GetWholeInterval(interval, out ticksRemainder);

                    if (wholeIntervals > 0)
                    {
                        depth += 1;

                        var term = interval.GetAppropriateSingularOrPluralTerm(wholeIntervals, localizer);

                        result = result.AppendIfRequired(" ", string.Format("{0} {1}", wholeIntervals, term));
                    }
                }
                else
                {
                    break;
                }
            }

            return(result);
        }
Esempio n. 2
0
        private static string Format(
            DateTimeInterval interval,
            long ticks,
            out long ticksRemainder,
            IStringLocalizer localizer)
        {
            if (interval.GetFlags().Count() > 1)
            {
                throw new ArgumentException(
                          string.Format("This function works with no more than one DateTimeInterval flag." +
                                        "The parameter passed was {0}, which is {1} flags",
                                        interval, interval.GetFlags().Count()),
                          nameof(interval));
            }

            var wholeIntervals = ticks.GetWholeInterval(interval, out ticksRemainder);
            var term           = interval.GetAppropriateSingularOrPluralTerm(wholeIntervals, localizer);

            return(string.Format("{0} {1}", wholeIntervals, term));
        }
Esempio n. 3
0
        internal static bool HasAllTheseIntervals(this long ticks,
                                                  DateTimeInterval intervals)
        {
            bool result = true;

            foreach (Enum flag in intervals.GetFlags(SortOrder.Descending))
            {
                result &= ticks.HasInterval((DateTimeInterval)flag);
            }

            return(result);
        }