今天测试提了一个BUG,说是消息提醒的时机不对,设置的提前2小时,还没到就提醒了。
看了下代码
(m.ExpectReceiveTime - DateTime.Now).Minutes < (pModel.ErtDelayPrevMinutes == -999 ? 0 : pModel.ErtDelayPrevMinutes))
执行
(m.ExpectReceiveTime - DateTime.Now).Minutes
结果是55,按道理应该是170
执行
(m.ExpectReceiveTime - DateTime.Now).TotalMinutes
结果是169.89568451
最后把代码修改为
(Convert.ToDecimal((m.ExpectReceiveTime - DateTime.Now).TotalMinutes) < (pModel.ErtDelayPrevMinutes == -999 ? 0 : pModel.ErtDelayPrevMinutes))
BUG解决
总结:
1.Minutes的计算只限于分钟部分,类型Int,(-59到59)
https://msdn.microsoft.com/zh-cn/library/vs/alm/system.timespan.minutes/css
2.TotalMinutes的计算是整个时间的分钟数,类型double。
https://msdn.microsoft.com/zh-cn/library/vs/alm/system.timespan.totalminutes/css
补充:
Days; //天部分 Hours; //小时部分
Milliseconds; //毫秒部分
Minutes; //分部分
Seconds; //秒部分
Ticks; //Tick 总数
TotalDays; //总天数
TotalHours; //总小时数
TotalMilliseconds; //总毫秒数
TotalMinutes; //总分钟数
TotalSeconds; //总秒数