日常C#编程开发中,TimeSpan 结构体用于表示两个日期或时间之间的间隔,属于是比较常用的类型。它提供了多个属性来访问这个间隔的各个组成部分,如天(Days)、小时(Hours)、分钟(Minutes)和秒(Seconds)等。在这些属性中,Minutes 和 TotalMinutes 尤为常用,但它们在功能和使用场景上有所不同。
按理说写了这么多年代码应该不至于分不清这两个属性的区别,但偏偏最近一个项目开发任务疏忽了这个问题就犯了这个低级的错误,导致一个小小的清理功能的简单时间判断循环任务直接进入死循环,直接把服务器资源给肝爆了0.0 还好属于测试阶段发现的早。
Minutes 属性
Minutes 是 TimeSpan 结构体中的一个成员,用于获取时间间隔的分钟数部分,但这个值并不包括整小时数。也就是说,Minutes只是时间间隔中不满一小时的部分所包含的分钟数。
总结:当你的业务开发逻辑需要知道某个时间间隔中除了整小时数之外的分钟数时,可以使用 Minutes。
(举例子:你有一个时间间隔为 1 小时 30 分钟,那么 Minutes 属性将返回 30,因为它只计算非整小时的分钟数。)
TimeSpan interval = TimeSpan.FromMinutes(90); // 相当于 1 小时 30 分钟 int minutesPart = interval.Minutes; // minutesPart 将会是 30
TotalMinutes 属性
与 Minutes 不同的是,*TotalMinutes 属性返回的是时间间隔的总分钟数,包括整小时数和小数分钟数。这个值是一个双精度浮点数(double),可以精确到小数点后两位。
总结:当你需要知道某个时间间隔的总分钟数,包括整小时数和小数分钟数时,可以使用 TotalMinutes。 (举例子:你有一个时间间隔为 2 小时 20.5 分钟,那么 TotalMinutes 将返回 140.5)。
TimeSpan interval = TimeSpan.FromHours(2) + TimeSpan.FromMinutes(20.5); // 相当于 2 小时 20.5 分钟 double totalMinutes = interval.TotalMinutes; // totalMinutes 将会是 140.5
总结说明
TotalMinutes 用于计算时间长度(换算成分钟的时间长度)
Minutes 是获取当前 TimeSpan 的分钟属性的数值