如何在C#中精确截断TimeSpan至分钟、秒或毫秒?
C#中通用快速截断TimeSpan至指定精度的方法
如果你需要快速且通用地将TimeSpan截断到天、小时、分钟、秒或毫秒级别,可以使用以下扩展方法:
/// <summary> /// 按照指定精度截断TimeSpan。 /// </summary> /// <param name="time">要截断的TimeSpan实例</param> /// <param name="roundTicks">截断精度对应的刻度值: /// <code> /// TimeSpan.TicksPerDay - 截断至天 /// TimeSpan.TicksPerHour - 截断至小时 /// TimeSpan.TicksPerMinute - 截断至分钟 /// TimeSpan.TicksPerSecond - 截断至秒 /// TimeSpan.TicksPerMillisecond - 截断至毫秒 /// </code> /// </param> /// <returns>截断后的TimeSpan</returns> public static TimeSpan Trim(this TimeSpan time, long roundTicks) => TimeSpan.FromTicks(time.Ticks - time.Ticks % roundTicks);
调用示例
// 定义起始时间 var d1 = new DateTime(2022, 02, 24, 5, 7, 3); // 获取当前时间 var d2 = DateTime.Now; // 截断至天级别 var timeDays = (d2 - d1).Trim(TimeSpan.TicksPerDay); // 截断至小时级别 var timeDaysAndHours = (d2 - d1).Trim(TimeSpan.TicksPerHour); // 截断至分钟级别 var timeDaysAndHoursAndMinutes = (d2 - d1).Trim(TimeSpan.TicksPerMinute);
这个方法通过计算TimeSpan的总刻度值对指定精度的刻度值取余,再用总刻度减去余数,实现了精准截断,性能高效且用法灵活,支持所有常见的时间精度需求。
内容的提问来源于stack exchange,提问作者Вячеслав
相关产品推荐
相关产品推荐

