/// <summary> /// Creates a new instance of <see cref="DateRangeBound"/> using a UTC timestamp /// </summary> /// <param name="precision"></param> /// <param name="utcTimestamp"></param> private DateRangeBound(DateRangePrecision precision, DateTimeOffset utcTimestamp) { if (precision < DateRangePrecision.Year || precision > DateRangePrecision.Millisecond) { throw new ArgumentOutOfRangeException("precision"); } if (utcTimestamp.Offset != TimeSpan.Zero) { throw new ArgumentException("Timestamp should be a UTC time", "utcTimestamp"); } _timestamp = utcTimestamp; _precision = precision; }
public static DateRange Create(DateRangePrecision precision, int span, DateTime? dateTime = null) { DateTime dt = dateTime ?? DateTime.Today; DateRange dateRange; switch (precision) { case DateRangePrecision.Seconds: dateRange = new DateRange(dt.Add(new TimeSpan(0, 0, span)), dt); break; case DateRangePrecision.Minutes: dateRange = new DateRange(dt.Add(new TimeSpan(0, span, 0)), dt); break; case DateRangePrecision.Hours: dateRange = new DateRange(dt.Add(new TimeSpan(span, 0, 0)), dt); break; case DateRangePrecision.Days: dateRange = new DateRange(dt.Add(new TimeSpan(span, 0, 0, 0, 0)), dt); break; case DateRangePrecision.Months: dateRange = new DateRange(dt.AddMonths(span), dt.AddDays(-1)); break; case DateRangePrecision.Year: dateRange = new DateRange(dt.AddYears(span), dt); break; default: dateRange = DateRange.Empty; break; } dateRange.Kind = DateRangeKind.Custom; return dateRange; }
private void Set(DateRangePrecision precision, int value) { _values[(int)precision] = value; }
/// <summary> /// Creates a new instance of <see cref="DateRangeBound"/>. /// </summary> public DateRangeBound(DateTimeOffset timestamp, DateRangePrecision precision) : this(precision, timestamp.ToUniversalTime()) { }
/// <summary> /// Private constructor only intended for creating the unbounded instance /// </summary> // ReSharper disable once UnusedParameter.Local private DateRangeBound(bool asUnbounded) { // Workaround: we can not declare a parameter-less constructor on a struct _timestamp = DateTimeOffset.MinValue; _precision = (DateRangePrecision)byte.MaxValue; }