Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Extension Methods in C#

0.00/5 (No votes)
18 Apr 2011 1  
Here is a methods that I use to round DateTime class to the next minute interval./// /// Rounds a date value to a given minute interval/// /// Original time value/// Number of minutes to round up or down...
Here is a methods that I use to round DateTime class to the next minute interval.
C#
/// <summary>
/// Rounds a date value to a given minute interval
/// </summary>
/// <param name="time">Original time value</param>
/// <param name="minuteInterval">Number of minutes to round up or down to</param>
/// <returns></returns>
public static DateTime RoundDateToMinuteInterval(this DateTime time, int minuteInterval, RoundingDirection direction = RoundingDirection.RoundUp)
{
  if (minuteInterval == 0)
    return time;

  decimal interval = (decimal)minuteInterval;
  decimal actMinute = (decimal)time.Minute;

  if (actMinute == 0.00M)
    return time;

  int newMinutes = 0;
  switch (direction)
  {
    case RoundingDirection.Round:
      newMinutes = (int)(Math.Round(actMinute / interval, 0) * interval);
      break;
    case RoundingDirection.RoundDown:
      newMinutes = (int)(Math.Truncate(actMinute / interval) * interval);
      break;
    case RoundingDirection.RoundUp:
      newMinutes = (int)(Math.Ceiling(actMinute / interval) * interval);
      break;
  }

  // *** strip time
  time = time.AddMinutes(time.Minute * -1);
  time = time.AddSeconds(time.Second * -1);
  time = time.AddMilliseconds(time.Millisecond * -1);

  // *** add new minutes back on
  return time.AddMinutes(newMinutes);
}

public enum RoundingDirection
{
  RoundUp,
  RoundDown,
  Round
}


If you have a DateTime that is:

DateTime d = new DateTime(2011, 4, 19, 10, 20, 0);
// And you call the function as this.
DateTime roundUpDateTime.RoundDateToMinuteInterval(15);
// roundUpDateTime will be - 2011-04-19 10:30:00

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here