DateTimeRangeExtensions.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Abp.Timing;
  5. namespace Abp.Extensions
  6. {
  7. /// <summary>
  8. /// Extension methods for <see cref="IDateTimeRange"/>.
  9. /// </summary>
  10. public static class DateTimeRangeExtensions
  11. {
  12. /// <summary>
  13. /// Sets date range to given target.
  14. /// </summary>
  15. /// <param name="source"></param>
  16. /// <param name="target"></param>
  17. public static void SetTo(this IDateTimeRange source, IDateTimeRange target)
  18. {
  19. target.StartTime = source.StartTime;
  20. target.EndTime = source.EndTime;
  21. }
  22. /// <summary>
  23. /// Sets date range from given source.
  24. /// </summary>
  25. public static void SetFrom(this IDateTimeRange target, IDateTimeRange source)
  26. {
  27. target.StartTime = source.StartTime;
  28. target.EndTime = source.EndTime;
  29. }
  30. /// <summary>
  31. /// Returns all the days of a datetime range.
  32. /// </summary>
  33. /// <param name="dateRange">The date range.</param>
  34. /// <returns></returns>
  35. public static IEnumerable<DateTime> DaysInRange(this IDateTimeRange dateRange)
  36. {
  37. return Enumerable.Range(0, (dateRange.TimeSpan).Days)
  38. .Select(offset => new DateTime(
  39. dateRange.StartTime.AddDays(offset).Year,
  40. dateRange.StartTime.AddDays(offset).Month,
  41. dateRange.StartTime.AddDays(offset).Day));
  42. }
  43. /// <summary>
  44. /// Returns all the days in a range.
  45. /// </summary>
  46. /// <param name="start">The start.</param>
  47. /// <param name="end">The end.</param>
  48. /// <returns></returns>
  49. public static IEnumerable<DateTime> DaysInRange(DateTime start, DateTime end)
  50. {
  51. return new DateTimeRange(start, end).DaysInRange();
  52. }
  53. }
  54. }