/// <summary> /// Rounds the specified date time down to the specified units. /// </summary> /// <example> /// (2014-02-12 10:33:24 AM, DateTimeUnits.Minute) => 2014-02-12 10:33:00 AM /// </example> public static DateTime Floor(this DateTime value, DateTimeUnits units) { switch (units) { case DateTimeUnits.Seconds: return(new DateTime(value.Year, value.Month, value.Day, value.Hour, value.Minute, value.Second, value.Kind)); case DateTimeUnits.Minutes: return(new DateTime(value.Year, value.Month, value.Day, value.Hour, value.Minute, 0, value.Kind)); case DateTimeUnits.Hours: return(new DateTime(value.Year, value.Month, value.Day, value.Hour, 0, 0, value.Kind)); case DateTimeUnits.Days: return(new DateTime(value.Year, value.Month, value.Day, 0, 0, 0, value.Kind)); case DateTimeUnits.Weeks: return(new DateTime(value.Year, value.Month, value.Day, 0, 0, 0, value.Kind).AddDays(1 - (int)value.DayOfWeek)); case DateTimeUnits.Months: return(new DateTime(value.Year, value.Month, 1, 0, 0, 0, value.Kind)); case DateTimeUnits.Years: return(new DateTime(value.Year, 1, 1, 0, 0, 0, value.Kind)); default: throw new ArgumentOutOfRangeException("units"); } }
private static DateTimeRange ParseShort(Match match) { var quantityStr = match.Groups["magnitude"].Value; var resolutionStr = match.Groups["units"].Value; DateTimeUnits units; switch (resolutionStr.ToLowerInvariant()) { case "s": units = DateTimeUnits.Seconds; break; case "m": units = DateTimeUnits.Minutes; break; case "h": units = DateTimeUnits.Hours; break; case "d": units = DateTimeUnits.Days; break; case "w": units = DateTimeUnits.Weeks; break; case "n": units = DateTimeUnits.Months; break; case "y": units = DateTimeUnits.Years; break; default: throw new FormatException("'" + resolutionStr + "' is not a valid units. specify one of [Seconds, Minutes, Hours, Days, Months, Years]."); } var quantity = double.Parse(quantityStr); return(new DateTimeRange(quantity, units)); }
public DateTimeRange(double magnitude, DateTimeUnits units) : this() { this.magnitude = magnitude; this.units = units; }