以下内容适用于具有小数毫秒的DateTime,并且还保留Kind属性(Local,Utc或Undefined)。
DateTime dateTime = ... anything ...dateTime = new DateTime( dateTime.Ticks - (dateTime.Ticks % TimeSpan.TicksPerSecond), dateTime.Kind );
或更短或更短:
dateTime = dateTime.AddTicks( - (dateTime.Ticks % TimeSpan.TicksPerSecond));
可以将其概括为扩展方法:
public static DateTime Truncate(this DateTime dateTime, TimeSpan timeSpan){ if (timeSpan == TimeSpan.Zero) return dateTime; // Or could throw an ArgumentException if (dateTime == DateTime.MinValue || dateTime == DateTime.MaxValue) return dateTime; // do not modify "guard" values return dateTime.AddTicks(-(dateTime.Ticks % timeSpan.Ticks));}其用法如下:
dateTime = dateTime.Truncate(TimeSpan.FromMilliseconds(1)); // Truncate to whole msdateTime = dateTime.Truncate(TimeSpan.FromSeconds(1)); // Truncate to whole seconddateTime = dateTime.Truncate(TimeSpan.FromMinutes(1)); // Truncate to whole minute...



