Esempio n. 1
0
        private static bool TryParseAsValue(WitEntity entity, DateTimeParserSettings settings, out DateTimeRange range)
        {
            if (entity != null && DateTimeOffset.TryParse(entity.Value, out DateTimeOffset date))
            {
                switch (entity.Grain)
                {
                case GrainHour:
                    range = new DateTimeRange(date, date.AddHours(1));
                    return(true);

                case GrainDay:
                    range = new DateTimeRange(date);
                    return(true);

                case GrainWeek:
                    range = new DateTimeRange(date, date.AddDays(settings.WeekDuration));
                    return(true);

                case GrainMonth:
                    range = new DateTimeRange(date, date.AddMonths(1));
                    return(true);

                case GrainYear:
                    range = new DateTimeRange(date, date.AddYears(1));
                    return(true);
                }
            }

            range = null;
            return(false);
        }
Esempio n. 2
0
        public static bool TryParse(WitEntity entity, out DateTimeRange range, DateTimeParserSettings settings = null)
        {
            settings = settings ?? DateTimeParserSettings.Default;

            if (IsDate(entity))
            {
                switch (entity.Type)
                {
                case TypeValue:
                    return(TryParseAsValue(entity, settings, out range));

                case TypeInterval:
                    return(TryParseAsInterval(entity, settings, out range));
                }
            }

            range = null;
            return(false);
        }
Esempio n. 3
0
        private static bool TryParseAsInterval(WitEntity entity, DateTimeParserSettings settings, out DateTimeRange range)
        {
            TryParseAsValue(entity.From, settings, out DateTimeRange fromRange);
            TryParseAsValue(entity.To, settings, out DateTimeRange toRange);
            if (fromRange != null && toRange != null)
            {
                range = new DateTimeRange(fromRange.StartDate, toRange.EndDate);
                return(true);
            }
            else if (fromRange != null)
            {
                range = new DateTimeRange(fromRange.StartDate, DateTime.MaxValue);
                return(true);
            }
            else if (toRange != null)
            {
                range = new DateTimeRange(DateTime.Now, toRange.EndDate);
                return(true);
            }

            range = null;
            return(false);
        }