有没有更优雅的方法移除TimeSpan中的秒数?
TimeSpan去除秒数实现方案说明
原有实现的合理性
你当前的写法是可以满足基础需求的,可读性也很高,但仅适用于TimeSpan值不超过24小时、不包含天数分量的场景。
如果你的TimeSpan可能携带天数(例如值为2.09:05:40,代表2天9小时5分40秒),该写法会丢失天数分量,仅保留小时、分钟,最终结果不符合预期。
更通用的优雅方案
推荐使用Ticks截断的方案,不管TimeSpan是否包含天数都能正确生效,同时会自动清除毫秒、微秒等更小的时间分量,结果更严谨:
myTimeSpan = new TimeSpan(myTimeSpan.Ticks / TimeSpan.TicksPerMinute * TimeSpan.TicksPerMinute);
如果只需要清除秒、保留毫秒,可以用更直观的减法写法:
myTimeSpan = myTimeSpan - TimeSpan.FromSeconds(myTimeSpan.Seconds);
选型建议
- 若你能确定业务中
TimeSpan永远不会超过24小时,原有写法完全可用,无需调整 - 若需要兼容所有可能的
TimeSpan取值,优先选择Ticks截断方案
内容的提问来源于stack exchange,提问作者Izacch
相关产品推荐
相关产品推荐

