Skip to content

Instantly share code, notes, and snippets.

@cameronsjo
Last active August 29, 2015 14:21
Show Gist options
  • Select an option

  • Save cameronsjo/cbce5187a60b7d266327 to your computer and use it in GitHub Desktop.

Select an option

Save cameronsjo/cbce5187a60b7d266327 to your computer and use it in GitHub Desktop.
public static DateTime Truncate(this DateTime date, DateTimeResolution resolution = DateTimeResolution.Hour)
{
switch (resolution)
{
case DateTimeResolution.Year:
return new DateTime(date.Year, 1, 1);
case DateTimeResolution.Month:
return new DateTime(date.Year, date.Month, 1);
case DateTimeResolution.Day:
return date.Date;
case DateTimeResolution.Hour:
return new DateTime(date.Ticks - date.Ticks % TimeSpan.TicksPerHour);
case DateTimeResolution.Minute:
return new DateTime(date.Ticks - date.Ticks % TimeSpan.TicksPerMinute);
case DateTimeResolution.Second:
return new DateTime(date.Ticks - date.Ticks % TimeSpan.TicksPerSecond);
case DateTimeResolution.Millisecond:
return new DateTime(date.Ticks - date.Ticks % TimeSpan.TicksPerMillisecond);
default:
throw new ArgumentOutOfRangeException("resolution", resolution, null);
}
}
public enum DateTimeResolution
{
Year,
Month,
Day,
Hour,
Minute,
Second,
Millisecond
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment