TimeSpanExtensions.cs 850 B

12345678910111213141516171819202122232425262728
  1. using System;
  2. namespace InABox.Core
  3. {
  4. public static class TimeExtensions
  5. {
  6. public static TimeSpan Floor(this TimeSpan timespan, TimeSpan interval)
  7. {
  8. return timespan.Subtract(new TimeSpan(timespan.Ticks % interval.Ticks));
  9. }
  10. public static TimeSpan Ceiling(this TimeSpan timespan, TimeSpan interval)
  11. {
  12. var overflow = timespan.Ticks % interval.Ticks;
  13. return overflow == 0 ? timespan : timespan.Add(new TimeSpan(interval.Ticks - overflow));
  14. }
  15. public static TimeSpan Round(this TimeSpan timespan, TimeSpan interval)
  16. {
  17. var halfIntervalTicks = (interval.Ticks + 1) >> 1;
  18. return timespan.Add(new TimeSpan(halfIntervalTicks - (timespan.Ticks + halfIntervalTicks) % interval.Ticks));
  19. }
  20. }
  21. }