/// <summary> /// Gets a verbose name for this period /// </summary> /// <returns></returns> public String GetPeriodName() { String output = ""; historyBinSize binSize = span.GetPeriodSize(); switch (binSize) { case historyBinSize.quartal: output = start.Year.ToString() + start.GetQuartalName(); break; case historyBinSize.year: output = start.Year.ToString(); break; case historyBinSize.month: output = start.ToString("yyyy-MM"); break; } if (output == "") { output = start.ToShortDateString() + "-" + end.ToShortDateString(); } return(output); }
public static DateTime ToEndDateTime(this historyBinSize binSize, DateTime fromDate, Int32 numberOfBins = 1) { DateTime end = fromDate; for (int i = 0; i < numberOfBins; i++) { switch (binSize) { case historyBinSize.day: end = fromDate.AddDays(1); break; case historyBinSize.week: end = fromDate.AddDays(7); break; case historyBinSize.twoWeeks: end = fromDate.AddDays(14); break; case historyBinSize.ThreeYears: end = fromDate.AddYears(3); break; case historyBinSize.FiveYears: end = fromDate.AddYears(3); break; case historyBinSize.month: end = fromDate.AddMonths(1); break; case historyBinSize.quartal: end = fromDate.AddMonths(3); break; case historyBinSize.year: end = fromDate.AddYears(1); break; default: break; } } return(end); }
public static historyBinSize GetPeriodSize(this TimeSpan span) { historyBinSize output = historyBinSize.undefined; if (span.TotalDays == 7) { return(historyBinSize.week); } if (span.TotalDays == 14) { return(historyBinSize.twoWeeks); } if (span.TotalDays == 1) { return(historyBinSize.day); } if (span.TotalDays > 88 && span.TotalDays < 93) { return(historyBinSize.quartal); } if (span.TotalDays > 28 && span.TotalDays < 32) { return(historyBinSize.month); } if (span.TotalDays == 365) { return(historyBinSize.year); } if (span.TotalDays == (365 * 3)) { return(historyBinSize.ThreeYears); } if (span.TotalDays == (365 * 5)) { return(historyBinSize.FiveYears); } return(historyBinSize.custom); }
/// <summary> /// Initializes a new instance of the <see cref="historyPeriodCollection"/> class. /// </summary> /// <param name="_start">The start.</param> /// <param name="_end">The end.</param> /// <param name="periodSize">Size of the period.</param> /// <param name="lastPeriodEqual">if set to <c>true</c> the last period will be extended over <c>_end</c> date, to be equal with other periods in the collection</param> public historyPeriodCollection(DateTime _start, DateTime _end, historyBinSize periodSize, Boolean lastPeriodEqual = true) { DateTime head = _start; historyPeriod lastPeriod = null; while (head < _end) { lastPeriod = periodSize.ToPeriod(head); Add(lastPeriod); head = lastPeriod.end; } if (!lastPeriodEqual) { lastPeriod.end = _end; } }
public static TimeSpan ToTimeSpan(this historyBinSize binSize, DateTime fromDate, Int32 numberOfBins = 1) { DateTime end = ToEndDateTime(binSize, fromDate, numberOfBins); return(end.Subtract(fromDate)); }
public static historyPeriod ToPeriod(this historyBinSize binSize, DateTime fromDate, Int32 numberOfBins = 1) { DateTime end = ToEndDateTime(binSize, fromDate, numberOfBins); return(new historyPeriod(fromDate, end)); }