Aspectacular.RelativeTimeSpan.GetTimeMomentRange C# (CSharp) Method

GetTimeMomentRange() public method

Warning: bug found. dt.Offset may be incorrect as offsets could be different if range crosses daylight saving switch, i.e. October - December, or month of November in the EST USA.
public GetTimeMomentRange ( DateTimeOffset referenceMoment = null ) : TimeMomentRange
referenceMoment DateTimeOffset
return TimeMomentRange
        public TimeMomentRange GetTimeMomentRange(DateTimeOffset? referenceMoment = null)
        {
            DateTime? refMoment = referenceMoment == null ? (DateTime?)null : new DateTime(referenceMoment.Value.UtcDateTime.Ticks);
            #pragma warning disable 618
            DateRange derange = this.GetDateTimeRange(refMoment);
            #pragma warning restore 618

            DateTimeOffset? starto, endo;

            if(referenceMoment == null)
            {
                starto = derange.HasStart ? derange.Start.Value : (DateTimeOffset?)null;
                endo = derange.HasEnd ? derange.End.Value : (DateTimeOffset?)null;
            } else
            {
                TimeSpan utcOffset = referenceMoment.Value.Offset;

                starto = derange.HasStart ? new DateTimeOffset(derange.Start.Value, utcOffset) : (DateTimeOffset?)null;
                endo = derange.HasEnd ? new DateTimeOffset(derange.End.Value, utcOffset) : (DateTimeOffset?)null;
            }

            TimeMomentRange range = new TimeMomentRange(starto, endo);
            return range;
        }

Usage Example

        /// <summary>
        /// Warning: bug found. dt.Offset may be incorrect as offsets could be different if range crosses daylight saving switch, i.e. October - December, or month of November in the EST USA.
        /// </summary>
        /// <param name="unit"></param>
        /// <param name="unitCount"></param>
        /// <param name="referenceMoment"></param>
        /// <returns></returns>
        public static TimeMomentRange Next(this TimeUnits unit, ulong unitCount = 1, DateTimeOffset?referenceMoment = null)
        {
            var             span  = new RelativeTimeSpan(Timeline.NextExcludingCurrent, unit, unitCount);
            TimeMomentRange range = span.GetTimeMomentRange(referenceMoment);

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