Aspectacular.RelativeTimeSpan.GetDateTimeRange C# (CSharp) Method

GetDateTimeRange() public method

public GetDateTimeRange ( System.DateTime referenceMoment ) : DateRange
referenceMoment System.DateTime
return DateRange
        public DateRange GetDateTimeRange(DateTime? referenceMoment)
        {
            DateTime refMoment = referenceMoment.IsNullOrDefault() ? (this.Unit.IsMomentInTime() ? DateTime.UtcNow : DateTime.Now) : referenceMoment.Value;

            DateTime? start = null, end = null;

            switch(this.Direction)
            {
                case Timeline.EntireCurrentOrSpecified:
                    start = refMoment.StartOf(this.Unit);
                    end = refMoment.EndOf(this.Unit);
                    break;
                case Timeline.ToDateOrTillSpecified:
                    start = refMoment.StartOf(this.Unit);
                    end = refMoment; // refMoment.EndOf(TimeUnits.Day);
                    break;
                case Timeline.Past:
                    end = refMoment;
                    start = this.Unit == TimeUnits.Eternity ? (DateTime?)null : end.Value.Add(-(int)this.UnitCount, this.Unit);
                    break;
                case Timeline.Future:
                    start = refMoment;
                    end = this.Unit == TimeUnits.Eternity ? (DateTime?)null : start.Value.Add((int)this.UnitCount, this.Unit);
                    break;
                case Timeline.PreviousExcludingCurrent:
                    end = refMoment.StartOf(this.Unit);
                    start = end.Value.Add(-(int)this.UnitCount, this.Unit);
                    end = end.Value.PreviousMoment();
                    break;
                case Timeline.NextExcludingCurrent:
                    start = refMoment.StartOf(this.Unit).Add(1, this.Unit);
                    end = start.Value.Add((int)this.UnitCount, this.Unit);
                    break;
            }

            DateRange range = new DateRange(start, end);
            return range;
        }

Usage Example

        public static DateRange Next(this TimeUnits unit, ulong unitCount, DateTime?referenceMoment)
        {
            var       span  = new RelativeTimeSpan(Timeline.NextExcludingCurrent, unit, unitCount);
            DateRange range = span.GetDateTimeRange(referenceMoment);

            return(range);
        }
All Usage Examples Of Aspectacular.RelativeTimeSpan::GetDateTimeRange