public void TestTimeMomentRangeYear() { DateTimeOffset now = DateTimeOffset.Now; TimeMomentRange dtr = TimeUnits.Year.Current((DateTimeOffset) new DateTime(now.Year, 5, 1, 11, 46, 38)); DateTimeOffset expectedStart = now.StartOf(TimeUnits.Year); DateTimeOffset expectedEnd = now.EndOf(TimeUnits.Year); Assert.AreEqual(expectedStart, dtr.Start.Value); Assert.AreEqual(expectedEnd, dtr.End.Value); }
public void TestTimeMomentRangeMonth() { DateTimeOffset now = DateTimeOffset.Now; TimeMomentRange dtr = TimeUnits.Month.Current((DateTimeOffset) new DateTime(2013, 5, 15, 11, 46, 38)); DateTimeOffset expectedStart = now.StartOf(TimeUnits.Month); DateTimeOffset expectedEnd = now.EndOf(TimeUnits.Month); Assert.AreEqual(expectedStart, dtr.Start.Value); Assert.AreEqual(expectedEnd, dtr.End.Value); dtr = TimeUnits.Month.Current(); expectedStart = now.StartOf(TimeUnits.Month); expectedEnd = now.EndOf(TimeUnits.Month); Assert.AreEqual(expectedStart, dtr.Start.Value); Assert.AreEqual(expectedEnd, dtr.End.Value); }
/// <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="referenceMoment"></param> /// <returns></returns> 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; }